簡體   English   中英

對包含對象列表的JSON對象進行脫鹽處理為嵌套對象返回Null

[英]Desalinizing JSON Object Contains List of Objects Returns Null for the nested object

這是我第一次嘗試使用JSON反序列化。 我已經閱讀了Stackoverflow上的許多帖子,沒有建議的解決方案可以解決我的問題,因此我提前道歉。 我創建了以下對象:

public class Item
{
    public int ID { get; set; }
    public int LSum { get; set; }
    public int YSum { get; set; }
    public int TSum { get; set; }
    public int NSum { get; set; }
    public int MemberId { get; set; }
}

public class Something
{
    public int Id { get; set; }
    public string Phone { get; set; }
    public bool ExistingMember { get; set; }
    public IList<Item> Item { get; set; }
}

反序列化JSON時,其外觀如下所示:以下是我期望的JSON:

    {
   "Id":62,
   "Phone":"07",
   "ExistingMember":true,
   "Item":[
      {
         "ID":42,
         "LSum":0,
         "YSum":0,
         "TSum":0,
         "NSum":0,
         "MemberId":12
      }
   ]
}

但是下面的方法呢

   some= JsonConvert.DeserializeObject<something>(someResponse);

它將按照以下方式打印json:以下JSON是“ someResponse”返回,

{
   "Id":62,
   "Phone":"07",
   "ExistingMember":true,
   "Item":null
}

我缺少項目列表返回null的問題嗎?

如果您想反序列化json字符串(在您的情況下是someResponse變量),那么您做對了。

為了檢查您的代碼,我創建了一個帶有file.json名稱的JSON文件,並將以下內容放入其中:

{
  "Id": 62,
  "Phone": "07",
  "ExistingMember": true,
  "Item": [
    {
      "ID": 42,
      "LSum": 0,
      "YSum": 0,
      "TSum": 0,
      "NSum": 0,
      "MemberId": 12
    }
  ]
}

然后在下面的代碼行中獲取JSON文件的內容(在您的情況下為someResponse的內容),並將其反序列化為Something類型的c#對象:

string jsonFilePath = @"C:\test\file.json";

var some = JsonConvert.DeserializeObject<Something>(File.ReadAllText(jsonFilePath));

然后打印Item列表的每個元素的ID屬性:

foreach(var item in some.Item)
{
    if (item != null)
    {
        Console.WriteLine($"item ID = {item.ID}");
    }               
}

輸出:

item ID = 42

因此, someResponse很可能沒有Item並且看起來像這樣:

{
  "Id": 62,
  "Phone": "07",
  "ExistingMember": true
}

更新:

我也這樣嘗試過:

var someResponse = @"{
  'Id': 62,
  'Phone': '07',
  'ExistingMember': true,
  'Item':[
    {
      'ID': 42,
      'LSum': 0,
      'YSum': 0,
      'TSum': 0,
      'NSum': 0,
      'MemberId': 12
    }
  ]
}
";

var some = JsonConvert.DeserializeObject<Something>(someResponse);

some有一個包含1個元素的Item列表 在此處輸入圖片說明

暫無
暫無

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

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