簡體   English   中英

用數組反序列化JSON對象

[英]Deserialize JSON object with array

為什么在嘗試反序列化此JSON時出現錯誤:

{
  "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);

錯誤說:

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

我一直在閱讀類似的QnA,查看各種示例,它們看起來都應該可以工作,但事實並非如此,我該怎么辦?


更新:我使用此代碼轉儲我的字符串

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

這是控制台中顯示的確切結果

JSON DUMP: {"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\"}]"}
[0:] 

“時間”在您的json中為字符串類型,但是您嘗試反序列化以鍵入float。 那行不通。

更新:顯然,在閱讀了關於您問題的評論后,它可以在Json.Net的某些實現中使用,但是可能是“依賴於版本的”,因此在您的場景中可能不起作用。

我收到的JSON格式不正確。

我認為這與SQL如何存儲JSON有關。

因此,我只是在解碼從數據庫中獲取的值,然后在發送之前對其重新編碼,現在它可以正常工作了。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM