![](/img/trans.png)
[英]Deserialize Object returns null with nested JSON when trying to map it
[英]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);
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.