json - 根据对象键/值在对象内连接 2 个数组

标签 json jq

我有多个 json 对象,如果对象键与下一个 json 对象匹配相同的值,那么当我合并数组时,这些对象可能会更少。我正在尝试使用 jq 来完成此任务。

我想我必须首先使用 group_by(.name) 对匹配的键进行分组。我还使用 slurp 首先将所有对象包装到一个大数组中。

我现在没有任何工作。

给定:

{
    "name": "a",
    "list": [ "a1", "a2" ]
}
{
    "name": "a",
    "list": [ "a3", "a4" ]
}
{
    "name": "b",
    "list": [ "b1", "b2" ]
}

应该导致:

{
    "name": "a",
    "list": [ "a1", "a2", "a3", "a4" ]
}
{
    "name": "b",
    "list": [ "b1", "b2" ]
}

最佳答案

您可以像这样使用reduce:

$ jq -c -n 'reduce inputs as $p ({}; .[$p.name] |= { name : $p.name, list : (.list + $p.list) }) | .[]' file
{"name":"a","list":["a1","a2","a3","a4"]}
{"name":"b","list":["b1","b2"]}

关于json - 根据对象键/值在对象内连接 2 个数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55312306/

相关文章:

json - 使用 JQ 扩展对 JSON 中同级值的引用

javascript - 为什么 JSON 通过 jslint.com 测试时 $.getJSON 会失败?

python - 如何在 CSV 到 JSON 转换中保持浮点精度(通过 pandas.read_csv)?

c# - 我的 workspace setting.json for unity on VSCode 表示 'end of file' 预期在 files.exclude 之后

django - 如何使用远程 URL 返回的 JSON 字符串(使用 Django)?

c# - JsonConvert.DeserializeObject 在 .net 中不起作用

使用jq在cli上解析Json

json - 使用 jq 比较来自同一个 json 的两个字段并打印一些其他字段作为结果

json - 从 JSON 对象中提取值并将它们分配给循环中的 shell 变量

json - 使用 JQ 从 bash 中的 JSON 对象检索值