将JSON字符串解析为对象的最简单的C#函数是什么?

Rel*_*lla 51 .net c# wpf json

什么是最简单的C#函数将JSON字符串解析为对象并显示它(C#XAML WPF)?(例如,具有2个数组的对象 - arrA和arrB)

Phi*_*ier 61

只需使用Json.NET库.它允许您非常轻松地解析Json格式字符串:

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

string something = (string)o["something"];
Run Code Online (Sandbox Code Playgroud)

文档:使用JObject.Parse解析JSON对象

  • 据我所知,这是允许通用对象类型解析的唯一选项,其他答案绑定到某个对象类型. (2认同)

Jus*_*ner 38

DataContractJsonSerializer serializer = 
    new DataContractJsonSerializer(typeof(YourObjectType));

YourObjectType yourObject = (YourObjectType)serializer.ReadObject(jsonStream);
Run Code Online (Sandbox Code Playgroud)

您也可以使用JavaScriptSerializer,但DataContractJsonSerializer据说能够更好地处理复杂类型.

奇怪的是,JavaScriptSerializer曾被弃用(在3.5中),然后由于ASP.NET MVC(在3.5 SP1中)而复活.这肯定足以动摇我的信心并引导我使用,DataContractJsonSerializer因为它很难为WCF烘焙.

  • 你必须首先添加一个参考,然后使用System.Runtime.Serialization.Json;` (5认同)

Rba*_*rin 18

我想这就是你想要的:

JavaScriptSerializer JSS = new JavaScriptSerializer();
T obj = JSS.Deserialize<T>(String);
Run Code Online (Sandbox Code Playgroud)

  • 我需要添加一个对`System.Web.Extensions`的引用来看到这个 (3认同)

Sub*_*Fox 5

您应该创建一个表示JSON键的结构(如果您确切知道它),然后您可以轻松地将JSON字符串反序列化到您的结构中.在我的考试中,我对Google Cloud Message服务器的响应进行了反序列化:

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;
    };
}
Run Code Online (Sandbox Code Playgroud)

传入的JSON是:

"\"multicast_id\":7400896764380883211,\"success\":1,\"failure\":0,\"canonical_ids\":0,\"results\":[{\"message_id\":\"0:1351777805148960%39895cf0f9fd7ecd\"}]}"
Run Code Online (Sandbox Code Playgroud)

所以,使用

templateResponse result = new JavaScriptSerializer().Deserialize<templateResponse>(json);
Run Code Online (Sandbox Code Playgroud)

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