c# - 如果值与给定模式匹配,则查找 JToken
问题描述
我试图在 JArray 中找到任何 JToken 值与__
.
JArray 是这样的,如果知道 Key 则更容易,即如果给text
定为 key,我可以找到所有 JToken,但如果我尝试通过 key 未知的值来解决。无法适应那段代码
"annotations": [
{
"align": "right",
"axref": "x",
"ayref": "y2",
"font": {
"size": 12,
"family": "Arial,Helvetica,sans-serif"
},
"showarrow": false,
"text": "D16-__m__0",
"x": 1,
"xanchor": "right",
"xref": "paper",
"y": 16,
"yanchor": "top",
"yref": "y2"
},
{
"showarrow": false,
"font": {
"size": 12,
"family": "Arial,Helvetica,sans-serif"
},
"text": "Something",
"textangle": -90,
"x": "__gh__",
"xanchor": "right",
"y": 0.5,
"yanchor": "middle",
"yref": "paper"
}
]
我尝试过这样的事情,但我不知道该怎么做。
destination["annotations"] .Children<JObject>().Where(x => x?["text"] != null && x["text"].Value<string>().Contains($"__{somevalue}__"))
但这给出了错误
destination["annotations"].Children().Where(x => x.Value<string>().Contains($"__{somevalue}__")))
解决方案
您可以Descendants()
在此处使用方法,获取所有属性并通过检查__
值中的字符串来过滤它们
var json = JObject.Parse(jsonString);
var result = json.Descendants().OfType<JProperty>().Where(p =>
p.Value.Type == JTokenType.String && p.Value.Value<string>().Contains("__"));
推荐阅读
- javascript - 分组产品的 Ajax 添加到购物车按钮
- pandas - 绘制堆积条形图
- sql - postgre sql - 在函数中使用时查询仅返回单个记录而不是列分隔表
- maven - 如何通过命令行在 serenity 2.0.x 中传递黄瓜标签
- modal-dialog - 本地组件状态的 Apollo 缓存或 useState()?(模态,过滤器......)
- angular - 我们如何将 path.td 转换为谷歌地图 api 中的纬度和经度数组?
- php - zsh:权限被拒绝:/Users/..;gem install rails ERROR: While execution gem ... (Errno::EACCES) Permission denied @ rb_sysopen - /Users/
- python - 给定一个项目,返回列表中的下一个项目
- sql - 查询以获取答案最多的问题
- kubernetes - Openshift Kubernetes 应用程序无法在 Jetty 服务器上启动:java.net.URISyntaxException:索引 7 处的预期权限