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

Posted

技术标签:

【中文标题】如何使用 JQ 转换此 JSON 数据以依次将每个嵌套数组元素提取到顶层?【英文标题】:How do I transform this JSON data using JQ to extract each nested array element to the top level in turn? 【发布时间】:2019-04-16 14:08:06 【问题描述】:

给定表单的输入

[
    "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,但是似乎无法使用父上下文进行任何进一步的操作。我真的被困住了,如果有任何帮助,我将不胜感激。

谢谢

【问题讨论】:

【参考方案1】:

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

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

【讨论】:

【参考方案2】:

你可以试试这个过滤器:

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

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

【讨论】:

以上是关于如何使用 JQ 转换此 JSON 数据以依次将每个嵌套数组元素提取到顶层?的主要内容,如果未能解决你的问题,请参考以下文章

如何将此嵌套的 JSON 以柱状形式转换为 Pandas 数据框

如何使用 jq 将此嵌套对象转换为扁平对象?

如何使用 jq 将 JSON 字符串格式化为表格?

如何使用jq将json项目值映射到兄弟数组

如何在 jq 中将 JSON 对象转换为 key=value 格式?

无法使用 jq 将 JSON 输出转换为 CSV 格式