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

C# 将JSON字符串解析为对象最简单的C函数是什么?,c#,.net,wpf,json,C#,.net,Wpf,Json,将JSON字符串解析为对象并显示它(C#XAML WPF)最简单的C函数是什么?(例如,具有两个数组的对象-arrA和arrB)我认为这就是您想要的: JavaScriptSerializer JSS = new JavaScriptSerializer(); T obj = JSS.Deserialize<T>(String); JavaScriptSerializer JSS=new JavaScriptSerializer(); T obj=JSS.Deserialize(字

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

我认为这就是您想要的:

JavaScriptSerializer JSS = new JavaScriptSerializer();
T obj = JSS.Deserialize<T>(String);
JavaScriptSerializer JSS=new JavaScriptSerializer();
T obj=JSS.Deserialize(字符串);
您也可以使用
JavaScriptSerializer
,但是
DataContractJsonSerializer
应该能够更好地处理复杂类型

奇怪的是,JavaScriptSerializer曾一度被弃用(在3.5中),但后来又因为ASP.NETMVC(在3.5SP1中)而复活。这肯定足以动摇我的信心,并引导我使用
DataContractJsonSerializer
,因为它对于WCF来说很难烘烤。

只要使用这个库就行了。它可以让您非常轻松地解析Json格式字符串:

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

string something = (string)o["something"];

文档:

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

您应该创建一个表示JSON键的结构(如果您确实知道的话),然后可以轻松地将JSON字符串反序列化到您的结构中。在我的示例中,我反序列化了来自Google云消息服务器的响应:

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);
templateResponse结果=新的JavaScriptSerializer()。反序列化(json);

您将得到反序列化的
结果
对象

我会在框架生命周期早期构建的序列化程序上使用它示例JSON和相关类很有帮助,谢谢。我需要添加对
System.Web.Extensions
的引用才能看到这个,它需要是一个特定的类型,不是吗?我不能只解析一个随机的JSON字符串。JSON.NET是一个经过测试的专业库,被证明是非常灵活和高效的。强烈推荐。据我所知,这是允许通用对象类型解析的唯一选项,其他答案都绑定到某个对象类型。很好的解决方案。虽然对我来说是这样工作的
jtokensomething=o[“something”]templateResponse result = new JavaScriptSerializer().Deserialize<templateResponse>(json);