![](/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.