簡體   English   中英

我無法反序列化JSON對象

[英]I can't deserialize JSON object like I want

我有這樣的網絡回復:

[{
  "st1": [
    "folio1",
    "folio2"
  ],
  "st2": [
    "folio1"
  ]
}]

這是調用我的Web服務器的代碼:

var response = await client.GetAsync(uri+"server/getSTFolios/");
if (response.IsSuccessStatusCode)
{
 var content = await response.Content.ReadAsStringAsync();
 var Item = JsonConvert.DeserializeObject<List<ST>>(content);
 return Item;
}

這是ST課,反序列化我的回答

public class ST
    {
        private string v;

        public ST(string v)
        {
            this.v = v;
        }

        public string st { get; set; }
        public string location { get; set; }
        public string note { get; set; }
        public int pk { get; set; }
        public List<Folio> folios { get; set; } 
        public override string ToString()
        {
           return "ST: " + st;
        }
    }

但是我無法獲取對象,無法反序列化。 我嘗試打印Item.ToString()時獲得了此信息

System.Collections.Generic.List`1[test2.ST]

這是我的調試器。 調試我的功能 謝謝

我猜這是因為您嘗試使用以下方式反序列化JSON對象

var Item = JsonConvert.DeserializeObject<List<ST>>(content);

但是您收到的響應與ST類格式不同。

您正在嘗試轉換一個看起來像

{
    "st1": ["folio1","folio2"],
    "st2": ["folio1"]
}

對此

public class ST
{
    public string st { get; set; }
    public string location { get; set; }
    public string note { get; set; }
    public int pk { get; set; }
    public List<Folio> folios { get; set; } 
}

他們沒有任何財產或任何財產。 這就是為什么在調試和將鼠標懸停在Item ,您確實會在該列表中看到一個對象,但是所有值都為null。 JsonConvert.DeserializeObject嘗試將您的響應轉換為ST的格式,但是沒有找到匹配的屬性,只是創建了一個空的ST

如果您收到包含多個對象的回復,例如

[{
    "st1": ["folio1","folio2"],
    "st2": ["folio1"]
},
{
    "st1": ["folio1","folio2"],
    "st2": ["folio1"]
}]

將鼠標懸停在Item ,將有2個充滿空值的對象。

編輯

您需要使服務器使用類似於ST類的對象進行響應。 例如,如果您的響應看起來像這樣,我認為它會起作用:

[{
    "st": "some string",
    "location": "some string",
    "note": "some string",
    "pk": 123,
    "folios" : 
    [{ 
        "pk": 123,
        "number": "some string" 
     },
     { 
        "pk": 123,
        "number": "some string" 
     }]
}]

暫無
暫無

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

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