【发布时间】:2019-10-16 18:19:33
【问题描述】:
我有一个 JSON 文档,我想访问 STATUS SECTION 的详细信息,但它一直返回 null。
JSON数据如图:
{
"results":[
{
"messageId":"15712480583306574",
"to":"",
"from":"TestServer",
"sentAt":"2019-10-16T17:47:38.368+0000",
"doneAt":"2019-10-16T17:47:38.370+0000",
"smsCount":1,
"mccMnc":"null",
"price":{
"pricePerMessage":0.0,
"currency":"USD"
},
"status":{
"groupId":5,
"groupName":"REJECTED",
"id":8,
"name":"REJECTED_PREFIX_MISSING",
"description":"Number prefix missing"
},
"error":{
"groupId":0,
"groupName":"OK",
"id":0,
"name":"NO_ERROR",
"description":"No Error",
"permanent":false
}
}
]
}
C#代码是:
string JsonData = response.Content.ToString();
dynamic results = JsonConvert.DeserializeObject<dynamic>(JsonData);
var statuses = results.status;
foreach(var stat in statuses) {
string groupname = stat.groupName.Value;
string name = stat.name.Value;
string description = stat.description.Value;
}
它一直返回null,我怎样才能访问这些成员?我正在使用 Newtonsoft。
【问题讨论】:
-
首先,
status是一个对象,而不是一个集合,您为什么希望能够迭代它? -
您可能需要考虑使用LINQ to JSON 而不是反序列化为
dynamic... -
@maccettura results.status 根据检查返回空值,所以迭代与否,它只是不断返回空值
-
@KevoyWalters 我希望我的评论能给你一个“啊哈”的时刻......如果
results是你的 json 集合属性,你希望你的 C#results.status给你什么? Heretic Monkey 是对的,如果你反序列化为一个具体的类,你的问题会更加明显(因为如果你使用具体的对象,你现在正在做的事情不会编译)