json jq -迭代对象,在value中为数组的每一项添加key

s1ag04yj  于 2022-12-01  发布在  其他
关注(0)|答案(1)|浏览(161)

初来jq这里。
我只想知道如何将对象的键添加到其值的每一项中,并将其转换为对象数组。我有以下JSON格式:

{
    "key1" : [
        "key1item1",
        "key1item2",
        "key1item3",
        "key1item4",
        ...
    ],
    "key2" : [
        "key2item1",
        "key2item2",
        ...
    ]
}

我想实现的是:

{
    "key1" : [
        {
            'parent': 'key1',
            'key': 'key1_key1item1',
            'value': 'key1_item1',
        },
        {
            'parent': 'key1',
            'key': 'key1_key1item2',
            'value': 'key1_item2',
        }
        {
            'parent': 'key1',
            'key': 'key1_key1item3',
            'value': 'key1_item3',
        }
    ],
    "key2" : [
        {
            'parent': 'key2',
            'key': 'key2_key2item1',
            'value': 'key2_item1',
        },
        {
            'parent': 'key2',
            'key': 'key2_key2item2',
            'value': 'key2_item2',
        }
        {
            'parent': 'key2',
            'key': 'key2_key2item3',
            'value': 'key2_item3',
        }
    ]
5f0d552i

5f0d552i1#

这应该可以做到:

with_entries(
    .key as $key
    | .value |= map(
         {parent: $key,
          key: ($key + (tostring)), 
          value: .}) )

相关问题