怎样判断json某个键的值是null?

中文命名法 2018-07-23 12:03:35
{"error": null, "result": {"status": "success"}, "id": 1}
调试发现程序并没有进入这个判断分支
if (Json["error"] == null)
...全文
1923 13 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
T形槽 2019-04-16
  • 打赏
  • 举报
回复
正解
全栈极简 2018-07-23
  • 打赏
  • 举报
回复
那你看下Json["error"]这个值是多少?
Anonymous477 2018-07-23
  • 打赏
  • 举报
回复

Json["error"] == null

在json不存在对应节点时才为空,而你现在是要判断它的内容,应该是

json.Value<string>("error") == null
正怒月神 2018-07-23
  • 打赏
  • 举报
回复
引用 9 楼 shawb 的回复:
引用 7 楼 hanjun0612 的回复:
那就肯定不对了啊。你json是一个 {{"error": null}},正常来说,应该是{"error": null}才对。我看了下,#5就是我要表述的意思
传过来的文本只有1组双引号,vs在显示json内容时候,另外又加了一组双引号上去。其实内容就只包含一组。

那你只要判断 Json["error"].ToString()==""就好了
中文命名法 2018-07-23
  • 打赏
  • 举报
回复
引用 8 楼 xuzuning 的回复:
            var s = "{\"error\": null, \"result\": {\"status\": \"success\"}, \"id\": 1}";
var json = JObject.Parse(s);
if (json["error"].Equals(JValue.CreateNull())) Console.WriteLine("NULL"); //NULL

关键在于你要遵守人家的规则!json["error"] 是 JToken 类型的对象,可隐式转换为 JValue 类型对象,而 JValue 有 CreateNull() 方法用于构造一个空对象,毕竟是第三方工具库,并不完全兼容 C# 的传统写法
不能写作 Json["error"] == null
只能写作 json["error"].Equals(JValue.CreateNull())
正解。
中文命名法 2018-07-23
  • 打赏
  • 举报
回复
引用 7 楼 hanjun0612 的回复:
那就肯定不对了啊。你json是一个 {{"error": null}},正常来说,应该是{"error": null}才对。我看了下,#5就是我要表述的意思
传过来的文本只有1组双引号,vs在显示json内容时候,另外又加了一组双引号上去。其实内容就只包含一组。
xuzuning 2018-07-23
  • 打赏
  • 举报
回复 2
json 并无问题,不要听人家先当然的说
            var s = "{\"error\": null, \"result\": {\"status\": \"success\"}, \"id\": 1}";
var json = JObject.Parse(s);
if (json["error"].Equals(JValue.CreateNull())) Console.WriteLine("NULL"); //NULL

关键在于你要遵守人家的规则!
json["error"] 是 JToken 类型的对象
可隐式转换为 JValue 类型对象
而 JValue 有 CreateNull() 方法用于构造一个空对象
毕竟是第三方工具库,并不完全兼容 C# 的传统写法
不能写作 Json["error"] == null
只能写作 json["error"].Equals(JValue.CreateNull())
正怒月神 2018-07-23
  • 打赏
  • 举报
回复
引用 4 楼 shawb 的回复:
[quote=引用 1 楼 guwei4037 的回复:]那你看下Json["error"]这个值是多少?
引用 3 楼 hanjun0612 的回复:
你先确定 Json是什么,在考虑 Json["error"]

[/quote]
那就肯定不对了啊。
你json是一个 {{"error": null}},正常来说,应该是{"error": null}才对。
我看了下,#5就是我要表述的意思
中文命名法 2018-07-23
  • 打赏
  • 举报
回复
引用 5 楼 xinbada1985 的回复:
Json["error"]你的DEBUG方式不对,你单看一下Json["error"],感觉你这写法不太对啊!还有Json的下一级好像没有"error"节点啊!他的下一级是{"error": null, "result": {"status": "success"}, "id": 1}这个啊!你可以试试Json[0]["error"]这个好不好用
xinbada1985 2018-07-23
  • 打赏
  • 举报
回复
Json["error"]你的DEBUG方式不对,你单看一下Json["error"],感觉你这写法不太对啊!还有Json的下一级好像没有"error"节点啊!他的下一级是{"error": null, "result": {"status": "success"}, "id": 1}这个啊!你可以试试Json[0]["error"]这个好不好用
中文命名法 2018-07-23
  • 打赏
  • 举报
回复
引用 1 楼 guwei4037 的回复:
那你看下Json["error"]这个值是多少?
引用 3 楼 hanjun0612 的回复:
你先确定 Json是什么,在考虑 Json["error"]

正怒月神 2018-07-23
  • 打赏
  • 举报
回复
你先确定 Json是什么,在考虑 Json["error"]
失落的神庙 2018-07-23
  • 打赏
  • 举报
回复
Json?["error"]?.["子级属性"]==null
就算没error判断页不会异常
vs2015支持语法。

111,098

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • AIGC Browser
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧