【问题标题】:JSON from flat key-value pair to nested objectJSON 从平面键值对到嵌套对象
【发布时间】:2021-11-15 09:59:31
【问题描述】:

如何将平面键值对(带有串联键)更改为嵌套组。我想在___ 处拆分一个键并将新的子键用作嵌套对象的键。

我尝试过mapsplit("___") 以及运营商|= 但无法得到它,jq

源(输入)文件,具有平面键值对

{
  "key1___subkey1-2-foo": "Value 1a",
  "key1___subkey1-2-bar": "Value 1b",
  "key2___subkey2-2___subkey2-3": "Value 2, Level 3",
  "key3": "Value 3"
}

目标格式,作为嵌套对象

{
  "key1": {
      "subkey1-2-foo": "Value 1a",
      "subkey1-2-bar": "Value 1b"
  },
  "key2": {
      "subkey2-2": {
        "subkey2-3": "Value 2, Level 3"
      }
  },
  "key3": "Value 3"
}

【问题讨论】:

标签: json jq


【解决方案1】:
jq 'to_entries | map(.key |= split("___")) | reduce .[] as $obj({}; setpath($obj.key; $obj.value))'

reduce 通过依次应用 setpath 和输入元素的键/值来构建对象

【讨论】:

  • 哇,谢谢我之前没有与reduce 合作过。太好了。
猜你喜欢
  • 2019-03-25
  • 1970-01-01
  • 2020-10-06
  • 1970-01-01
  • 2019-07-08
  • 2023-01-18
  • 1970-01-01
  • 2018-12-29
相关资源
最近更新 更多