什么是最简单的C#函数来parsing一个JSONstring到一个对象?

什么是最简单的C#函数来parsing一个JSONstring到一个对象,并显示它(C#的XAML WPF)? (例如具有2个数组的对象 – arrA和arrB)

DataContractJsonSerializer serializer = new DataContractJsonSerializer(typeof(YourObjectType)); YourObjectType yourObject = (YourObjectType)serializer.ReadObject(jsonStream); 

你也可以使用JavaScriptSerializer ,但DataContractJsonSerializer被认为能够更好地处理复杂的types。

奇怪的是,JavaScriptSerializer曾经被弃用(3.5版),然后因为ASP.NET MVC(3.5 SP1)而复活。 这绝对足以震撼我的信心,并导致我使用DataContractJsonSerializer因为它很难烘焙WCF。

只需使用Json.NET库。 它可以让你非常容易地parsingJson格式的string:

 JObject o = JObject.Parse(@" { ""something"":""value"", ""jagged"": { ""someother"":""value2"" } }"); string something = (string)o["something"]; 

文档: 使用JObject.ParseparsingJSON对象

我想这是你想要的:

 JavaScriptSerializer JSS = new JavaScriptSerializer(); T obj = JSS.Deserialize<T>(String); 

您应该创build一个表示JSON键的结构(如果您完全知道的话),然后您可以轻松地将JSONstring反序列化到您的结构中。 在我的例子中,我已经反序列化来自Google Cloud Message server的响应:

 class templateResponse { public String multicast_id; public String success; public String failure; public String canonical_ids; public Result[] results; public class Result { public String message_id; public String registration_id; public String error; }; } 

传入的JSON是:

 "\"multicast_id\":7400896764380883211,\"success\":1,\"failure\":0,\"canonical_ids\":0,\"results\":[{\"message_id\":\"0:1351777805148960%39895cf0f9fd7ecd\"}]}" 

所以,使用

 templateResponse result = new JavaScriptSerializer().Deserialize<templateResponse>(json); 

你会得到反序列化的result对象

我会回应Json.NET库,它可以将JSON响应转换为XML文档。 使用XML文档,您可以使用XPath轻松查询并提取所需的数据。 我觉得这很有用。