jsonpath - 使用 JSONPath 从数组中检索连续的数组元素,而不使用索引,仅通过它们的值
问题描述
我有一个如下的json主体-
{
"type": "SourceUnit",
"children": [
{
"type": "PragmaDirective",
"name": "solidity",
"value": ">=0.4.22 <0.9.0"
},
{
"type": "ContractDefinition",
"name": "txorigin",
"baseContracts": [],
"subNodes": [],
"kind": "contract"
}
],
"tokens": [
{
"type": "Keyword",
"value": "pragma"
},
{
"type": "Identifier",
"value": "solidity"
},
{
"type": "Punctuator",
"value": ">="
},
{
"type": "Version",
"value": "0.4.22"
},
{
"type": "Punctuator",
"value": "<"
},
{
"type": "Version",
"value": "0.9.0"
},
{
"type": "Punctuator",
"value": ";"
},
{
"type": "Keyword",
"value": "contract"
},
{
"type": "Identifier",
"value": "txorigin"
},
{
"type": "Punctuator",
"value": "{"
},
{
"type": "type",
"value": "address"
},
{
"type": "Identifier",
"value": "owner"
},
{
"type": "Punctuator",
"value": ";"
},
{
"type": "Keyword",
"value": "constructor"
},
{
"type": "Punctuator",
"value": "("
},
{
"type": "Punctuator",
"value": ")"
},
{
"type": "Keyword",
"value": "public"
},
{
"type": "Punctuator",
"value": "{"
},
{
"type": "Identifier",
"value": "owner"
},
{
"type": "Punctuator",
"value": "="
},
{
"type": "Identifier",
"value": "msg"
},
{
"type": "Punctuator",
"value": "."
},
{
"type": "Identifier",
"value": "sender"
},
{
"type": "Punctuator",
"value": ";"
},
{
"type": "Punctuator",
"value": "}"
},
{
"type": "Keyword",
"value": "function"
},
{
"type": "Identifier",
"value": "sendTo"
},
{
"type": "Punctuator",
"value": "("
},
{
"type": "type",
"value": "address"
},
{
"type": "Identifier",
"value": "receiver"
},
{
"type": "Punctuator",
"value": ","
},
{
"type": "type",
"value": "uint"
},
{
"type": "Identifier",
"value": "amount"
},
{
"type": "Punctuator",
"value": ")"
},
{
"type": "Keyword",
"value": "public"
},
{
"type": "Punctuator",
"value": "{"
},
{
"type": "Identifier",
"value": "require"
},
{
"type": "Punctuator",
"value": "("
},
{
"type": "Identifier",
"value": "tx"
},
{
"type": "Punctuator",
"value": "."
},
{
"type": "Identifier",
"value": "origin"
},
{
"type": "Punctuator",
"value": "=="
},
{
"type": "Identifier",
"value": "owner"
},
{
"type": "Punctuator",
"value": ")"
},
{
"type": "Punctuator",
"value": ";"
},
{
"type": "Punctuator",
"value": "("
},
{
"type": "type",
"value": "bool"
},
{
"type": "Identifier",
"value": "success"
},
{
"type": "Punctuator",
"value": ","
},
{
"type": "Punctuator",
"value": ")"
},
{
"type": "Punctuator",
"value": "="
},
{
"type": "Identifier",
"value": "receiver"
},
{
"type": "Punctuator",
"value": "."
},
{
"type": "Identifier",
"value": "call"
},
{
"type": "Punctuator",
"value": "."
},
{
"type": "Identifier",
"value": "value"
},
{
"type": "Punctuator",
"value": "("
},
{
"type": "Identifier",
"value": "amount"
},
{
"type": "Punctuator",
"value": ")"
},
{
"type": "Punctuator",
"value": "("
},
{
"type": "Keyword",
"value": ""
},
{
"type": "Punctuator",
"value": ")"
},
{
"type": "Punctuator",
"value": ";"
},
{
"type": "Identifier",
"value": "require"
},
{
"type": "Punctuator",
"value": "("
},
{
"type": "Identifier",
"value": "success"
},
{
"type": "Punctuator",
"value": ")"
},
{
"type": "Punctuator",
"value": ";"
},
{
"type": "Punctuator",
"value": "}"
},
{
"type": "Punctuator",
"value": "}"
},
{
"type": "Keyword",
"value": "<EOF>"
}
]
}
每当执行任何代码时,我都想检查上面的“tx”、“.”、“origin”值是否在我生成的 json 中可用。并且,它应该像 (tx.origin) 一样连续。如果它可用,它会返回一些东西。我可以获取任何一个值 - .tokens[?(@.value == "tx")].value 我需要以连续方式检查所有 3 个值。
你们能帮帮我吗?提前致谢。
解决方案
另一种选择是只获取值
$.tokens[*].value
这将为您提供所有值。它们应该按正确的顺序排列,但不能保证。
推荐阅读
- vba - 重命名访问vba中的字段
- c - 为什么我把它放在全屏时控制台颜色会改变?
- c# - 如何在 AddPolicy 语句中连接条件 RequireClaims 表达式
- sql - 如何在 oracle 中拆分以空格分隔的字符串并将每个单词添加到 Oracle 11g 中的不同行?
- java - 休眠错误:方法太大(超过 65535 字节大小)
- mongodb - mongodb.find() 搜索 100 万个文档的有效方法?
- amazon-web-services - 根据修改日期从 s3 存储桶下载数百万条记录
- bitmap - PY8583 Python 库构建不正确的 ISO8583 位图
- java - 如何安装 JMapViewer
- android - Android - 由于操作系统回收内存而区分应用程序启动和重新启动