【发布时间】:2009-11-12 03:10:45
【问题描述】:
是否有一个简单/优雅的解析器来处理 C# 中的 JSON?实际序列化/反序列化成 C# 对象怎么样?
【问题讨论】:
-
作为这个问题的附录,谁能说明
System.Web.Script.Serialization.JavaScriptSerializer是否适用于这个问题(msdn.microsoft.com/en-us/library/…)?我很好奇。
是否有一个简单/优雅的解析器来处理 C# 中的 JSON?实际序列化/反序列化成 C# 对象怎么样?
【问题讨论】:
System.Web.Script.Serialization.JavaScriptSerializer 是否适用于这个问题(msdn.microsoft.com/en-us/library/…)?我很好奇。
JSON.Net 是一个不错的库
【讨论】:
var jss = new JavaScriptSerializer();
var data = jss.Deserialize<dynamic>(jsonString);
别忘了引用“System.Web.Extensions”
【讨论】:
见
基本上,您也可以将“数据契约”模型(通常用于 WCF XML 序列化)用于 JSON。我发现它非常快速且易于独立用于小任务。
还可以查看此示例:
【讨论】:
有DataContractJsonSerializer 类。
反序列化:
DataContractJsonSerializer ser = new DataContractJsonSerializer(typeof(MyObject));
Stream s = new MemoryStream(System.Text.Encoding.UTF8.GetBytes(json_string));
MyObject obj = ser.ReadObject(s) as MyObject;
序列化:
DataContractJsonSerializer ser = new DataContractJsonSerializer(typeof(MyObject));
Stream s = new MemoryStream();
MyObject obj = new MyObject { .. set properties .. };
ser.WriteObject(s, obj);
s.Seek( SeekOrigin.Begin );
var reader = new StreamReader(s);
string json_string = reader.ReadToEnd();
【讨论】:
DataContractJsonSerializer 用于对对象进行序列化。
在 Silverlight 3 中,有 System.Json (http://msdn.microsoft.com/en-us/library/system.json(VS.95).aspx),非常方便。
【讨论】: