我已经阅读了很多关于如何使用DataContractJsonSerializer将JSON对象反序列化为特定对象的教程。但是,我想将我的对象反序列化为由字符串,数组或字典组成的字典,例如当我说JsonObject.Parse(myJSONstring)时System.Json与SilverLight一起使用。
我可以在WPF项目中使用与System.Json等效的对象吗?
(只是一个简短的背景:我正在获取有很多信息的JSON对象,我只是想用一点来填充一个String数组)
干杯
的Nik
答案 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/