首页 > 解决方案 > C# Json 读取数组

问题描述

我正在尝试读取 Json 中的数据,但由于某种原因我找不到我的错误。这是我正在寻找的一个例子。

{
   "number": 1,
   "pencil":
   {
      "Array": [
           {
               "color":
               {
                  "red": 0,
                  "green": 0,
                  "blue": 0
               },
               "id": 1234
           },
           {
               "color":
               {
                  "red": 100,
                  "green": 10,
                  "blue": 50
               },
               "id": 1235
           },
       ]
   },
   "something_else": 2
}

我试过这条线,但它一直在出错。

var test = JsonConvert.DeserializeObject<List<Pencil>>(jsonString);

我正在尝试获取红色、绿色蓝色值和 id,但我不知道如何。

public class Pencil
{
   public List<Color> colors {get; set;}
   public int id;
}

public class Color
{
   public int red;
   public int green;
   public int blue;
}

标签: c#json

解决方案


首先,你应该有根对象:

public class Root
{
    public int number {get; set;}
    public Pencil pencil {get; set;}
}

其次,您的颜色属性应命名为Array

public class Pencil
{
   public List<Color> array {get; set;}
   public int id;
}

第三,您不能反序列化为Color,因为 jsonpencil包含id属性和color对象。你应该有类似包装器的东西:

public class ColorInfo
{
    public int id {get; set;}
    public Color color {get; set;}
}

所以你的Pencil

public class Pencil
{
   public int id;
   public List<ColorInfo> array {get; set;} // ColorInfo instead of Color
}

最后,反序列化:

var result = JsonConvert.DeserializeObject<Root>(jsonString);

推荐阅读