将JSON字符串解析为对象并显示它的最简单的C#函数是什么(C#XAML WPF)? (例如,具有2个数组的对象 - arrA和arrB)
答案 0 :(得分:60)
只需使用Json.NET库。它允许您非常轻松地解析Json格式字符串:
JObject o = JObject.Parse(@"
{
""something"":""value"",
""jagged"":
{
""someother"":""value2""
}
}");
string something = (string)o["something"];
答案 1 :(得分:38)
DataContractJsonSerializer serializer =
new DataContractJsonSerializer(typeof(YourObjectType));
YourObjectType yourObject = (YourObjectType)serializer.ReadObject(jsonStream);
您也可以使用JavaScriptSerializer
,但DataContractJsonSerializer
可以更好地处理复杂类型。
奇怪的是,JavaScriptSerializer曾被弃用(在3.5中),然后由于ASP.NET MVC(在3.5 SP1中)而被复活。这肯定足以动摇我的信心并引导我使用DataContractJsonSerializer
,因为它很难为WCF烘焙。
答案 2 :(得分:18)
我认为这就是你想要的:
JavaScriptSerializer JSS = new JavaScriptSerializer();
T obj = JSS.Deserialize<T>(String);
答案 3 :(得分: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;
};
}
传入的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
对象
答案 4 :(得分:2)
我会回应Json.NET库,它可以将JSON响应转换为XML文档。使用XML文档,您可以轻松地使用XPath进行查询并提取所需的数据。我觉得这很有用。