【问题标题】:Convert JSON object to an array of strings with jq使用 jq 将 JSON 对象转换为字符串数组
【发布时间】:2018-12-22 22:43:23
【问题描述】:

我有一个 JSON 对象,它只包含字符串和其他对象:

{
  "key1": "value1",
  "key2": "value2",
  "key3": {
    "subKey1":"value3",
    "subKey2":"value4"
  }
}

我想通过展平结构将其转换为字符串数组

[
  "key1.value1",
  "key2.value2",
  "key3.subKey1.value3",
  "key3.subKey2.value4",
]

我对 jq 语法还很陌生,到目前为止,我还是在

的帮助下实现了这一点
to_entries | map([.key, .value | if type == "object" then type else . end]|join("."))

然后我得到

[
  "key1.value1",
  "key2.value2",
  "key3.object"
]

【问题讨论】:

    标签: arrays json jq


    【解决方案1】:

    替代方案:

    jq '[paths(scalars) as $p | $p + [getpath($p)] | join(".")]' f.json
    

    预期输出:

    [
      "key1.value1",
      "key2.value2",
      "key3.subKey1.value3",
      "key3.subKey2.value4"
    ]
    

    【讨论】:

      【解决方案2】:

      使用paths 使任务变得简单。

      paths as $p
      | getpath($p) 
      | scalars
      | $p + [.]
      | join(".")
      

      产生流:

      "key1.value1"
      "key2.value2"
      "key3.subKey1.value3"
      "key3.subKey2.value4"
      

      因此,您需要将上面的过滤器括在方括号中以生成一个数组。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2022-10-07
        • 2023-01-24
        • 2021-10-21
        • 1970-01-01
        • 2013-08-29
        • 2023-03-08
        • 2017-05-30
        相关资源
        最近更新 更多