2011-06-08 78 views
2

我正在使用WCF在其中返回JSON。但我得到的消息看起來像如何使用C#將序列化返回到JSON

"{\"ids\":[\"id\":1,\"id\":34,\"id\":67,\"id\":100,\"id\":133,\"id\":166,\"id\":199]}" 

如何擺脫第一個和最後一個qoutation標記?

編輯:

public class Ids { 
    public IdDetails[] ids{get;set} 
} 
public class IdDetails{ 
    public int id {get;set} 
} 

在這裏,我返回JSON

public string GetIds(){ 
    Ids ids = new Ids(); 
    List<IdDetails> idd = new List<IdDetails>(); 
    for(int i=0;i<10; i++){ 
     idd.add(new IdDetails(i+1*33)); 
    } 
    ids.ids = idd.ToArray(); 
    JavaScriptSerializer jSerialize = new JavaScriptSerializer(); 
    string json = jSerialize.Serialize(ids); 
    return ids; 
} 

* 編輯2:解決*

的方法不應該返回一個字符串。它應該返回一個Ids對象。無需序列化。 設置ResponseFormat = WebMassageFormat.Json,它將工作。

謝謝反正!

+1

如何創建JSON對象?你能提供一些代碼嗎? – 2011-06-08 08:27:14

+0

@Niklas添加了som代碼:) – johan 2011-06-08 08:37:49

回答

1

JavaScriptSerializer Class

的JavaScriptSerializer類是由異步通信層內部用於序列化和反序列化在所述瀏覽器和Web之間傳遞的數據服務器。您無法訪問該序列化程序的實例。但是,這個類公開了一個公共API。因此,當您想在託管代碼中使用JavaScript對象表示法(JSON)時,可以使用該類。

要序列化一個對象,請使用Serialize方法。要反序列化JSON字符串,請使用Deserialize或DeserializeObject方法。要序列化和反序列化JavaScriptSerializer本機不支持的類型,請使用JavaScriptConverter類實現自定義轉換器。然後使用RegisterConverters方法註冊轉換器。

我用它在非web應用程序中。

4

您是否正在使用Visual Studio Debugger進行字符串查找?

            Screenshot

的調試器顯示的字符串作爲C#字符串文字。該字符串本身並不包含前導和尾隨的"字符和\字符。

Console.WriteLine(s); 

輸出:

 
{"ids":["id":1,"id":34,"id":67,"id":100,"id":133,"id":166,"id":199]} 
+0

我在WCF中返回它。然後我得到qoutation標記。 – johan 2011-06-08 08:41:05