【问题标题】:jq create a new json by transforming an existing onejq 通过转换现有的 json 创建一个新的 json
【发布时间】:2017-03-13 11:49:56
【问题描述】:
    {
    "prodid_876006": {
        "serid": [{
            "seridone": "3265874"
        }, {
            "seridtwo": "21458915"
        }],
        "serials": ["028915"]
    },
    "prodid_980": {
        "serid": [{
            "seridone": "32743214"
        }, {
            "seridtwo": "5469872"
        }],
        "serials": ["192147","1632589"]
    }
}

期望的输出: 对于每个 json 对象,提取 prodid_info 和 serials 数组,并创建一个新的 json 文件,格式如下:

{    
"prodid_876006" : ["028915"],
"prodid_980" : ["192147","1632589"]
}

jq 命令是什么?

keys ,.[].serials

给了我以下信息:

[
  "prodid_876006",
  "prodid_980"
]
[
  "028915"
]
[
  "192147",
  "1632589"
]

更新问题:

我怎样才能在另一个 json 中获得以下输出? (这里key是serials数组的每个元素,value是第一个样本json的key):

{    
"028915" : ["prodid_876006"],
"192147" : ["prodid_980"],
"1632589" : ["prodid_980"]
}

【问题讨论】:

    标签: json jq


    【解决方案1】:

    这样的事情会起作用,你提取一个键值对数组并通过管道传递给from_entries

    % jq '[to_entries[] | {"key": .key, "value": .value.serials}] | from_entries' 42762941.json
    {
      "prodid_876006": [
        "028915"
      ],
      "prodid_980": [
        "192147",
        "1632589"
      ]
    }
    

    【讨论】:

    • 这可能是一个新问题,如何更改上述内容,以便将每个唯一序列作为键,并将相应的产品作为值?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-09-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多