【发布时间】:2018-01-15 07:06:23
【问题描述】:
我有一个如下所示的 JSON 结构来显示特定候选人的详细信息 它可以是 null 也可以包含一些详细信息,如下所示
"details": {
"gender": {
"id": 3,
"props": {
"name": "male"
}
}
}
or as null
"details": {
"gender": null
}
为了读取我尝试过的性别值
string _gender = (string)result["details"]["gender"]["props"]["name"];
这将适用于非空情况。但如果它为 null,则此代码返回异常
所以首先检查它是否为空,如果不为空,请尝试读取该值,我尝试了下面的代码
string _gender = (string)result["details"]["gender"];
if (!string.IsNullOrEmpty(_gender))
{
_gender = (string)result["details"]["gender"]["props"]["name"];
}
但我得到了无法将对象转换为字符串的异常。那么如何通过正确的 null 处理读取 JSON 属性 \
【问题讨论】:
-
为什么不将其反序列化为性别可以为空的类型?
-
gender 只是 JArray 的一个属性。
-
你仍然可以反序列化它。如果您将Json2C# 与完整的json 一起使用,则可以将
details的类型设置为可为空并将您的json 反序列化为一个对象,例如List<YourObject>。然后获取所有实例的 details 属性。 -
也许只是
if(result["details"]["gender"] != null)?请记住,result["details"]["gender"]的类型是 JToken,而不是字符串 -
看起来像 Json.NET get nested jToken value 的副本。同意吗?