这是我第一次尝试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吗?
答案 0 :(得分:0)
如果要反序列化在您的情况下为someResponse
变量的json字符串,那么您做对了。
要检查您的代码,我创建了一个名称为 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));
然后打印ID
列表中每个元素的Item
属性:
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);