Arrays 如何从cURL';带.JQ的ed-JSON
以上就是我正在使用的一个例子,我的问题是如何过滤掉任何代币,这样我一眼就能看到它有什么 我见过很多其他类似的答案Arrays 如何从cURL';带.JQ的ed-JSON,arrays,json,curl,filter,jq,Arrays,Json,Curl,Filter,Jq,以上就是我正在使用的一个例子,我的问题是如何过滤掉任何代币,这样我一眼就能看到它有什么 我见过很多其他类似的答案 { "accounts": [ { "accountId": "account001", "tokens": [ "tokens1", "tokens2", "tokens
{
"accounts": [
{
"accountId": "account001",
"tokens": [
"tokens1",
"tokens2",
"tokens3",
"tokens4",
]
}
]
}
但是,正如您所看到的,令牌没有像示例中那样的.name
其他人能告诉我如何获取我拥有的数据并搜索它以查看是否有令牌2吗
提前感谢您提供的任何帮助。我能够在评论中使用马可鲁西迪的建议来解决问题
cat file.json | jq '.items[] | select(.name == "thing-3") | .'
如何过滤掉任何令牌,以便我一眼就能看到,所以有什么
其他人能告诉我如何获取我拥有的数据并搜索它以查看是否有令牌2吗
我不太确定我是否理解这个问题,但考虑到“如何过滤将“tokens2”
列为代币的帐户?”的解释,因为这将是一件有意义且不完全是琐碎的事情,您可以对数据进行处理
给定jq查询:
jq '.accounts[].tokens[] | select(. == "tokens2")
从以下数据中查找[“account001”、“account003”]
:
.accounts | map(select(.tokens | index("tokens2")) | .accountId)
解释如下:
将文档缩减为帐户列表.accounts
筛选出…|映射(选择(…)
为其生成..
的帐户null
将每个帐户对象减少到其标记列表中(.tokens |.
内
是映射到的帐户数组的每个元素,因此映射(…)
是该帐户对象的子列表).tokens
生成非零索引,如果在列表中找不到该值,则生成…|index(“tokens2”)
null
- 随后,在
内,但在映射(…)
外,一个选择(…)
已应用,因此通过…|。accountId
过滤器的每个对象都将减少为仅其帐户id选择(…)
{
"accounts": [
{
"accountId": "account001",
"tokens": [
"tokens1",
"tokens2",
"tokens3",
"tokens4"
]
},
{
"accountId": "account002",
"tokens": [
"tokens3",
"tokens4"
]
},
{
"accountId": "account003",
"tokens": [
"tokens1",
"tokens2"
]
}
]
}
如果找到匹配项,您希望实现的输出是什么?你想要回报什么?不确定我是否正确理解了你想要实现的目标。是否要检查
tokens2
是否包含在tokens
数组中?如果是这样的话,类似这样的jq'.accounts[].tokens[]| select(.==“tokens2”)'文件。json
将打印“tokens2”
,如果找到,则不会打印任何内容。不确定如何在@MarcoLucidi中将您的答案标记为正确,但确实如此,谢谢。在这样做的过程中,我明白了为什么我需要更好地挖掘这两个帐户[]然后标记所有其他示例都显示了深入1的效果。
{
"accounts": [
{
"accountId": "account001",
"tokens": [
"tokens1",
"tokens2",
"tokens3",
"tokens4"
]
},
{
"accountId": "account002",
"tokens": [
"tokens3",
"tokens4"
]
},
{
"accountId": "account003",
"tokens": [
"tokens1",
"tokens2"
]
}
]
}
.accounts | map(select(.tokens | index("tokens2")) | .accountId)
.accounts | map(select(.tokens | index("tokens2")))
[ .accounts[] | select(.tokens | index("tokens2")) | .accountId ]