在不知道json是否包含特定键的时候,如何最快速的判断这个键的值是否是特定值?

中文命名法 2019-08-10 10:17:25
是不是只能这样先判断有没有这个键,有的话再判断值对不对?
JObject Json = JObject.Parse(文本);
if (Json.ContainsKey("特定键") && Json["特定键"].ToString() == "特定值")
// 包含"特定键"且该键的值为"特定值"时满足条件
else
// 不包含"特定键"或包含该键,但该键的值不为"特定值"时不满足条件
有没有办法一次就判断出来?譬如类似这样的写法:
if (Json["特定键"] == JValue("特定值"))    // 编译不通过
...全文
292 9 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
wanghui0380 2019-08-15
  • 打赏
  • 举报
回复
so,随便去nuget用"json xpath" 和"json sql" 查找就可以找到一堆,至于快就未必了,json这种万能鸭型的,你除了重建索引映射,没啥更快的办法。 顶多可能是把你自己写的玩意,变成emit或类似linq的构造表达式,在内部自动代码判定返回
csdnFUCKINGSUCKS 2019-08-15
  • 打赏
  • 举报
回复
引用 5 楼 正怒月神 的回复:
其实我想问问,这个最快速的意思是什么? 代码简短,还是速度快?
可能觉得 代码简短=速度快
wanghui0380 2019-08-15
  • 打赏
  • 举报
回复
快?没有快的 把这个变成xpath,或者类sql的查询都是没问题的,比如很多nosql数据库都支持json的直接查询,甚至说mssql也能支持json的查询 问题在与快,没啥快的。都是内部遍历的,顶多是可能重新映射,内部索引。
正怒月神 2019-08-15
  • 打赏
  • 举报
回复
其实我想问问,这个最快速的意思是什么? 代码简短,还是速度快?
github_36000833 2019-08-15
  • 打赏
  • 举报
回复
比较容易理解的: var firstKey = Json.Properties().FirstOrDefault()?.Name;
代码较少的: var firstKey = (Json.First as JProperty)?.Name;
assky124 2019-08-15
  • 打赏
  • 举报
回复
直接正则判断不是更快
Demons1874 2019-08-15
  • 打赏
  • 举报
回复
转成字符串判断可以吗?比如 string.Contains("\"xxx\":");
中文命名法 2019-08-14
  • 打赏
  • 举报
回复
引用 1 楼 github_36000833 的回复:
“Null 条件运算符”
if (Json["特定键"]?.ToObject<string>() == "特定值")
{}
好的。再请问,怎么判断 Json 的第一个键的键名是什么?
github_36000833 2019-08-11
  • 打赏
  • 举报
回复
“Null 条件运算符” if (Json["特定键"]?.ToObject<string>() == "特定值") { }

111,097

社区成员

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

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

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