2009-12-03 142 views
7

我讀過很多關於如何使用DataContractJsonSerializer將JSON對象反序列化爲特定對象的教程。但是,我想將我的對象反序列化爲包含字符串,數組或字典的字典,比如當我說JsonObject.Parse(myJSONstring)時,System.Json用SilverLight做的。.NET/WPF中的通用JSON解析器?

有沒有等同於我可以在我的WPF項目中使用的System.Json?

(只是一個簡短的背景:我取有辦法不多資訊JSON對象,我只是想用一點點地填寫一個String數組)

乾杯

回答

3

看看http://json.org/的C#部分(scoll至底部),他們有幾個串行器和解析器的實現應該有所幫助。

1

我成功地使用JayRock:http://jayrock.berlios.de/

public class JayRockMarshaller : IMarshaller 
{ 
    public ICollection Read(string text) 
    { 
     return (ICollection)new ImportContext().Import(new JsonTextReader(new StringReader(text))); 
    } 

    public string Write(ICollection objectToMarshal) 
    { 
     var writer = new StringWriter(); 
     new ExportContext().Export(objectToMarshal, new JsonTextWriter(writer)); 
     return writer.ToString(); 
    } 
} 

同時適用於字典和列表像做夢一樣。

8

只要使用.NET的內置JavaScriptSerializer。

var jss = new JavaScriptSerializer(); 
var data = jss.Deserialize<dynamic>(jsonString); 

//"data" actually implements IDictionary<string, object> 
var p1 = data["Property1"]; 
var p2 = data["Property2"]; 

不要忘了參考 「System.Web.Extensions程序」