C# 将JSON字符串解析为对象最简单的C函数是什么?
将JSON字符串解析为对象并显示它(C#XAML WPF)最简单的C函数是什么?(例如,具有两个数组的对象-arrA和arrB)我认为这就是您想要的: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(字
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”]有时,如果需要解析json,那么引入外部库似乎很愚蠢。在这里,使用DataContractJsonSerializer是一种更实用的方法。这就像是拉入EntityFramework,因为您的应用程序确实执行了一些数据库查询。
templateResponse result = new JavaScriptSerializer().Deserialize<templateResponse>(json);