.NET / WPF中的通用JSON解析器?

时间:2009-12-03 15:22:08

标签: c# .net json serialization

我已经阅读了很多关于如何使用DataContractJsonSerializer将JSON对象反序列化为特定对象的教程。但是,我想将我的对象反序列化为由字符串,数组或字典组成的字典,例如当我说JsonObject.Parse(myJSONstring)时System.Json与SilverLight一起使用。

我可以在WPF项目中使用与System.Json等效的对象吗?

(只是一个简短的背景:我正在获取有很多信息的JSON对象,我只是想用一点来填充一个String数组)

干杯

的Nik

4 个答案:

答案 0 :(得分: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”

答案 1 :(得分:3)

看一下http://json.org/的C#部分(滚动到底部),他们有几个应该帮助的序列化器和解析器的实现。

答案 2 :(得分: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();
    }
}

适用于像梦一样的词典和列表。

答案 3 :(得分:0)

另请查看https://github.com/jlarsson/Kiwi.Json它处理各种数据类型,如果内置的数据类型不合适,您可以轻松创建自己的转换器。

在博客中,您可以在此处找到示例:http://dancewithcode.wordpress.com/2012/03/24/case-study-custom-json-converter-for-datatable/