2009-12-03 144 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程序”