0

尝试解析 JSON 响应时出错

try
{
   var result = (new JavaScriptSerializer()).Deserialize<Rootobject>(jsonResponse);
}
catch(Exception ex){}

JSON字符串

"[{\"ID\":1,\"Code\":null,\"Name\":\"Black\"},{\"ID\":1,\"Code\":null,\"Name\":\"Red\"},{\"ID\":1,\"Code\":\"blx\",\"Name\":\"Blue\"}]"

附有错误详细信息和准确 JSON 字符串的屏幕截图

在此处输入图像描述

我正在使用以下代码生成 JSON

   public string JSONTest()
   {
        List<Color> colors = new List<Color>(); 
        colors.Add(new Color() { ID = 1, Name = "Black" }); 
        colors.Add(new Color() { ID = 1, Name = "Red" }); 
        colors.Add(new Color() { ID = 1, Name = "Blue", Code = "blx" }); 

        return JsonConvert.SerializeObject(colors); 
    }
4

3 回答 3

1

尝试这个

var result = (new JavaScriptSerializer()).Deserialize<List<Class1>>(jsonResponse);

您的结果将是 Class1 的列表

在此处输入图像描述

于 2018-02-20T05:23:13.623 回答
0

JSON string反序列化需要Root Key才能完成反序列化过程

在您的情况下,此 JSON 不知道要反序列化哪个对象

您必须显示反序列化 JSON 字符串中的类。

 public class Rootobject
 {         
    public Class1[] Property1 { get; set; }
 }


 public class Class1
 {
    public int ID { get; set; }

    public string Code { get; set; }

    public string Name { get; set; }
 }



     string jsonResponse = "{ \"Property1\" :  [{\"ID\":1,\"Code\":null,\"Name\":\"Black\"},{\"ID\":1,\"Code\":null,\"Name\":\"Red\"},{\"ID\":1,\"Code\":\"blx\",\"Name\":\"Blue\"}] }";

     var result = (new JavaScriptSerializer()).Deserialize<Rootobject>(jsonResponse);

使用根键生成 JSON 字符串

    public string JSONTest()
    {

        List<Class1> colors = new List<Class1>();
        colors.Add(new Class1() { ID = 1, Name = "Black" });
        colors.Add(new Class1() { ID = 1, Name = "Red" });
        colors.Add(new Class1() { ID = 1, Name = "Blue", Code = "blx" });

        return JsonConvert.SerializeObject(new Rootobject { Property1 = colors.ToArray() });
    }

或者,

DeserializeObject方法可以直接反序列化object。如果你像这样使用它,你将不需要根键,但返回值将是一个对象..

 string jsonResponse = "[{\"ID\":1,\"Code\":null,\"Name\":\"Black\"},{\"ID\":1,\"Code\":null,\"Name\":\"Red\"},{\"ID\":1,\"Code\":\"blx\",\"Name\":\"Blue\"}]";
                object[] result = (object[])(new JavaScriptSerializer()).DeserializeObject(jsonResponse);
于 2018-02-20T06:21:34.263 回答
0

嘿尝试使用以下:

 Class1 obj=new Class1();
 obj=serializer.Deserialize<Class1>(jsonResponse);
于 2018-02-20T05:15:08.393 回答