【问题标题】:How to copy data from one json to another using jq如何使用 jq 将数据从一个 json 复制到另一个
【发布时间】:2018-09-21 14:39:31
【问题描述】:

我有两个 json 输入,我希望 jq 构建一个新的 json,将第二个数组中的元素复制到第一个 对应位置

第一个 json:

[
   {"foo": "foo1", "bar": "bar1"},
   {"foo": "foo2", "bar": "bar2"},
   {"foo": "foo3", "bar": "bar3"}
]

第二个json:

[[
   "baz1",
   "baz2",
   "baz3"
]]

预期结果:

[
   {"foo": "foo1", "bar": "bar1", "baz": "baz1"},
   {"foo": "foo2", "bar": "bar2", "baz": "baz2"},
   {"foo": "foo3", "bar": "bar3", "baz": "baz3"}
]

我试过这个命令行,但它似乎不起作用

jq -n --argfile o1 "1st.json" --argfile o2 "2nd.json" "[$o1 []  | .baz= $o2[][]]"

【问题讨论】:

    标签: json merge jq


    【解决方案1】:

    下面采用直截了当的做法,有点行人的地步:

    jq -s -f merge.jq 1.json 2.json
    

    假设文件merge.jq 包含:

    .[1][0] as $two
    | .[0]
    | reduce range(0; length) as $i (.;
        .[$i].baz = $two[$i] )
    

    变化

    如果你的 jq 支持 --argfile 选项,你可以通过运行来避免“slurping”的开销:

    jq --argfile two 2.json -f merge.jq 1.json
    

    假设 merge.jq 包含:

    reduce range(0; length) as $i (.; 
      .[$i].baz = $two[0][$i] )
    

    【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-10-30
    • 2014-05-02
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多