json - 使用jq如何将key添加到现有的JSON数据结构中
问题描述
您好,在此先感谢您,
所以我有以下JSON:
{
"key1" : {
"someKey": "someValue"
},
"key2" : {
"someKey": "someValue"
}
}
我正在寻找的输出是:
[
{
"someKey": "someValue",
"$key" : "key1"
},
{
"someKey": "someValue",
"$key" : "key2"
}
]
所以基本上我需要使用 jq 将“键”作为一个单独的属性附加到该键的对象的值中。
我已经想出了如何将值转换为数组,但我不知道如何将“$key”添加到对象中。
请帮忙。谢谢。
解决方案
我使用以下命令找到了解决方案:
[ to_entries[] | {"$key": .key} * .value ]
这是如何工作的?
to_entries[]
输出_
{
"key": "key1",
"value": {
"someKey": "someValue"
}
}
{
"key": "key2",
"value": {
"someKey": "someValue"
}
}
然后它使用'|'管道这个输出,在管道之后它创建一个对象
{"$key": .key}
然后,使用*
运算符,它将这个新对象与位于输出.value
中每个对象的键处的对象合并to_entries[]
。
最外层的包装[]
只是从流中创建一个数组。
推荐阅读
- c# - 如何导航到推送通知点击的特定页面
- java - 迁移到 IPv6,如何强制使用特定范围?
- sql - Oracle ORDER BY 复杂查询问题
- css - 如何删除 material-ui 的可滚动选项卡中的多余空间?
- apache-kafka - Kafka Streams - 未创建存储
- javascript - 如何使用 nodeJs 生成 javascript 文件
- c# - 我需要将文本分成段落以获取字符串列表。分隔符将以给定的模式重复
- docker - 如何使用 aws serverless 运行 docker
- javascript - TestCafe - 将 Selector 的结果存储在变量中
- javascript - 带有双等号的虚假表达式