繁体   English   中英

如何使用 JQ 转换此 JSON 数据以依次将每个嵌套数组元素提取到顶层?

[英]How do I transform this JSON data using JQ to extract each nested array element to the top level in turn?

给定表单输入

[
    {"a": 1, "b": [{"c": 1}, {"c": 2}]}, 
    {"a": 2, "b": [{"c": 4}, {"c": 5}]}
]

我正在尝试转换为:

[
    {"a": 1, "b": [{"c": 1}],
    {"a": 1, "b": [{"c": 2}],
    {"a": 2, "b": [{"c": 3}],
    {"a": 2, "b": [{"c": 4}]
]

我有[map(.b) ] | flatten [map(.b) ] | flatten ,但是似乎不可能使用父上下文进行任何进一步的操作。 我真的被困住了,希望得到任何帮助。

谢谢

这是一个简单的解决方案,除了“b”之外没有提及任何键:

map(. + (.b[] | {b: [.]}))

你可以试试这个过滤器:

jq 'map({a,"b":.b[]|[.]})' file

它分别用c每个值更新b的内容。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM