【发布时间】:2021-03-09 06:29:37
【问题描述】:
我在处理Newtonsoft.json 时遇到了null 处理问题。
我想检查结果是不是null。基于此,我想处理一些条件。
我的代码如下:
try {
var response = GetApiData.Post(_getApiBaseUrl, data.ToString());
var jsonString = response.ResultString;
var jsonContent = JObject.Parse(jsonString);
if (jsonContent["User"] != null) // <-- null handling
{
var user = JToken.Parse(jsonContent["User"].ToString());
membershipUser = GetMembershipUser(user);
}
}
jsonContent 和null 如下:
{
"User": null
}
如果"User": null jsonContent["User"] 返回{} 和jsonContent["User"] != null 条件没有抛出任何错误,但不是跳过块,而是执行内部行。
所以对于null 处理,我使用了这段代码:
if (jsonContent["User"].Value<string>() != null)
如果是"User": null,上面的代码可以正常工作。
但如果jsonContent["User"] 有有效数据,则会抛出错误。
无法将 Newtonsoft.Json.Linq.JObject 转换为 Newtonsoft.Json.Linq.JToken
jsonContent的有效数据如下:
{
"User": {
"Claims": [],
"Logins": [],
"Roles": [],
"FirstName": "Unknown",
"LastName": "Unknown",
"IsApproved": true,
"IsDeleted": false,
"Email": "testuser@user.com",
"EmailConfirmed": false,
"PasswordHash": "AC/qXxxxxxxxxx==",
"SecurityStamp": "001f3500-0000-0000-0000-00f92b524700",
"PhoneNumber": null,
"PhoneNumberConfirmed": false,
"TwoFactorEnabled": false,
"LockoutEndDateUtc": null,
"LockoutEnabled": false,
"AccessFailedCount": 0,
"Id": "00f50a00-0000-0000-0000-000b97bf2800",
"UserName": "testUser"
}
}
如何使用有效数据和空值实现这种空值处理?
【问题讨论】: