【问题标题】:How to move element to (new) child?如何将元素移动到(新)孩子?
【发布时间】:2018-05-30 12:13:25
【问题描述】:

考虑这个文件:

{"x": [
    {
        "a": {
            "b": [],
            "c": 42
        }
    },
    {
        "a": {
            "d": true
        }
    }
]}

但现在我需要像这样将所有bs(不需要存在!)向下移动一级:

{"x": [
    {
        "a": {
            "e": {
                "b": []
            },
            "c": 42
        }
    },
    {
        "a": {
            "d": true
        }
    }
]}

我见过the example that does the opposite,但很遗憾我无法将其应用到我的案例中。

【问题讨论】:

  • 输入文档是无效的JSON,更新你的问题

标签: json object transformation jq


【解决方案1】:

假设输入是有效的 JSON,并且在可能的情况下应用转换是可以接受的,为了简单起见,我会使用 walk

walk( if type == "object" and has("b")
      then .e = .b | del(.b)
      else . end )

您可能还想检查 .e 是否存在以避免破坏它。

如果你的 jq 没有 walk 那么只需在上面插入它的 def;对于定义,只需 google 即可:jq “def walk”

【讨论】:

    猜你喜欢
    • 2019-09-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-12-17
    • 2021-02-02
    • 1970-01-01
    • 2021-11-29
    相关资源
    最近更新 更多