使用数组反序列化JSON对象

时间:2018-04-20 05:27:53

标签: c# json

当我尝试反序列化此JSON时,为什么会出现错误:

<div class="maindiv">
      <select name="" id="">
        <option value="">Item 1</option>
        <option value="">Item 2</option>
        <option value="">Item 3</option>
    </select>
    <!--   i want to put my own caret icon here -->
    </div>

进入这些课程:

{
  "id" : 1,
  "name" : "demo",
  "pixeldata" : [
      { "time" : "1", "colour" : "#ff5357" },
      { "time" : "2", "colour" : "#2424ff" },
      { "time" : "3", "colour" : "#ff0d13" },
      { "time" : "4", "colour" : "#f7ff4a" },
      { "time" : "5", "colour" : "#fa24ff" },
      { "time" : "6", "colour" : "#ff3e43" }
  ]
}

使用:

public struct Display
{
    public int id;
    public string name;
    public List<Pixeldata> pixeldata;
}

public struct Pixeldata
{
    public float time;
    public string colour;
}

错误说:

Display MyDisplay = JsonConvert.DeserializeObject<Display>(json_string);

我一直在阅读类似的QnA,查看各种示例,它们看起来都应该有效,但它不是,我该怎么办?

更新:我使用此代码转储我的字符串

Error converting value "[{ "time" : "1", "colour" : "#ff5357"}, {etc...}]" to type 'System.Collections.Generic.List`1[Pixeldata]'. Path 'pixeldata', line 1, position 313.

这是控制台中显示的确切结果

Debug.Print("JSON DUMP: "+_ServerResponse.data);

2 个答案:

答案 0 :(得分:0)

“time”在json中是string类型,但是您尝试反序列化以键入float。那不行。

更新:显然,在阅读了有关您的问题的评论后,它可以在 Json.Net的某些实现中工作,但这可能是“版本相关的”,因此可能无法在您的场景中运行

答案 1 :(得分:0)

我收到的JSON格式不正确。

我认为这与SQL存储JSON的方式有关。

所以我只是搞砸了我从数据库中获取的值,然后在发送之前重新编码它们,现在它可以正常工作。