c# - 在 C# 中动态寻址 JSON
问题描述
我希望编写一些允许客户端提供 JSON 字符串和查询字符串的 C#。然后,查询字符串将用于处理 JSON 对象中的值。
例如,如果我有这个 JSON:
{
"head": "big",
"fingers": [
"one", "thumb",
"two", "ring"
],
"arm": {
"elbow", "locked"
}
}
这个查询字符串:
"fingers.two"
我想返回值"ring"
。
这(或类似的东西)在 C# 中可能吗?
我曾尝试使用ExpandoObject
该类,但这不允许动态运行时检查:
var json = JsonConvert.DeserializeObject<ExpandoObject>(jsonStr);
据我所知,json
变量值的发现需要在代码时完成,而不是运行时,这意味着我无法动态找到正在查询的值。
解决方案
JSONPath 这样做
假设如下 JSON(修复了原文中的一些语法错误)
{
"head": "big",
"fingers": {
"one":"thumb",
"two":"ring"
},
"arm": {
"elbow": "locked"
}
}
而这个查询
MyJObjectOrToken.SelectToken("fingers.two")
您将获得以下输出:
[
"ring"
]
然后使用 JSON.Net 方法将值提取为字符串并将结果返回给您的用户应该很简单。
JSONPath 支持内置于 JSON.Net
推荐阅读
- ibm-cloud - 调用 IBM Cloud Function 的 Watson Assistant 操作失败,此平台不支持直接 CloudFunctions 调用
- assembly - 从用户那里获取数据,将其与传感器数据进行比较,根据比较结果关闭/打开电源
- c++ - C ++将指向函数参数的指针更改为数组参数
- javascript - 反应 / Javascript 变量
- sql-server - 具有不同所有者的 SQL Server 所有权链跨架构,用于从多个架构中选择视图
- regex - 正则表达式匹配无限数量的连字符后跟数字
- javascript - amMap 移除home键控件
- sql - 具有一些重叠数据的两个 SQL 查询
- css - 悬停时的 CSS 过渡幻灯片菜单 - 固定功能
- ruby-on-rails - c9 - rails 看起来正在运行 - 无法访问应用程序