json - JSON解析[`jq`]:获取祖父母兄弟姐妹的值
问题描述
例子
{
"gp_sibling": "desired_value",
"grand-parent": {
"parent": [
{
"key": "known_value",
"sibling": "asdf"
}
]
}
}
问题定义
我有一个很大的 JSON。我知道它key
具有独特的价值。我需要得到它的祖父母的兄弟键值(键的值gp_sibling
)。
现在,我可以grep
使用 JSON,但我想使用jq
. 但我不知道如何实现这一点(我jq
仅用于简单查询)。
笔记
虽然我知道它jq
也可以在 Windows 上使用,但我只在 Linux 上使用它。
发布更新
- 从示例中删除了逗号。一些格式修复。
解决方案
如果您只想获取元素gb_sibling
,可以使用以下内容:
jq .gp_sibling <file>
如果您只想在存在key
具有其值的元素时获取它,则可以尝试以下操作:
jq 'select(."grand-parent"?.parent?[]?.key=="known_value")|.gp_sibling' <file>
key
这样,它会过滤内部属性内容parent
等于grand-parent
的元素known_value
。
从那个结果中,gp_sibling
被选中。
[注意]
grand-parent
被引用是因为破折号否则会导致问题。
推荐阅读
- node.js - 如果身份验证失败护照,则不调用下一个函数
- git - 在 Oracle Linux 服务器上执行 git 命令时出错,返回错误代码 501
- java - Java REST 和 ANGULAR > JSON 解析错误:无法反序列化 `java.util.ArrayList` 的实例
- c - C编程中第二个括号中的错误
- azure-ad-b2c - 使用 Azure AD B2C 为自定义属性设置空值
- java - 如果页面不适合 Java JFrame 图像,则不会加载
- c++ - JSONCPP 附加到文件
- node.js - 当 url 包含奇怪的 unicode 字符时,无法在 nodejs 中获取 json/text
- c++ - 如何解决这个逻辑运算符问题?
- javascript - 会话文件未在 AJAX 的父页面上更新