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

时间:2010-05-18 18:01:33

标签: c# .net wpf json

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

5 个答案:

答案 0 :(得分:60)

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

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

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

文档: Parsing JSON Object using JObject.Parse

答案 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进行查询并提取所需的数据。我觉得这很有用。