输入JSON:

[
  {
    "e": "id1",
    "c": [
      {
        "title": "title1",
        "enable": false
      }
    ]
  },
  {
    "e": "id2",
    "c": [
      {
        "title": "title2",
        "enable": true
      }
    ]
  }
]

我希望在与c相同的级别创建名为Filted的新属性,该属性包含来自c且Enable属性未设置为False的任何项.因此,预期yields 是

[
  {
    "e": "id1",
    "c": [
      {
        "title": "title1",
        "enable": false
      }
    ],
   "filtered": []
  },
  {
    "e": "id2",
    "c": [
      {
        "title": "title2",
        "enable": true
      }
    ],
  "filtered": [
      {
        "title": "title2",
        "enable": true
      }
    ]
  }
]

我正在使用以下规格

[
  {
    "operation": "shift",
    "spec": {
      "@": "&"
    }
    },
  {
    "operation": "modify-default-beta",
    "spec": {
      "root": {
        "*": {
          "c": {
            "*": {
              "enable": true
            }
          }
        }
      }
    }
    },
  {
    "operation": "shift",
    "spec": {
      "root": {
        "*": {
          "c": {
            "*": {
              "enable": {
                "true": {
                  "@2": "[&5].filtered[]"
                }
              }
            }
          },
          "@": ""
        }
      }
    }
  }
 ]

但它完全跳过顶层的第一个元素并生成如下输出

[
  {
    "e": "id1",
    "c": [
      {
        "title": "title1",
        "enable": true
      }
    ]
  },
  {
    "e": "id2",
    "c": [
      {
        "title": "title2",
        "enable": true
      }
    ],
    "filtered": [
      {
        "title": "title2",
        "enable": true
      }
    ]
  }
]

将感谢任何帮助,以正确的规格.

对于每个有效的输入,SPEC似乎完全跳过了顶层的第一个元素

推荐答案

您可以使用下面的Jolt规范来获得预期的输出JSON

[
  {
    "operation": "shift",
    "spec": {
      "*": {
        "c": {
          "*": {
            "enable": {
              "true": {
                "@3": "[&5].filtered"
              }
            }
          }
        },
        "@": "[]"
      }
    }
  },
  {
    "operation": "modify-default-beta",
    "spec": {
      "*": {
        "filtered": []
      }
    }
  }
]

Json相关问答推荐

PowerShell脚本未按预期生成预期的JSON输出

使用Jolt v.0.1.1向每个json元素添加一个键-值对

如何在改装Android中将ResponseBody转换为JSONObject

Jolt:数组中两个字符串的连接

使用 JSON 和相对日期设置日历视图中 SharePoint 列表项的背景 colored颜色 格式

如何使用jq使用子值对象的键对json对象进行分组

在 postgres 14 中将记录转换为所需的 json 格式

如何将 JSON 文本作为参数传递给 powershell?

ORA-01422: 精确提取返回的行数超过了与 json 对象组合的请求数

使用 KQL 和外部 data() 运算符从 json 文件中提取信息

boost::json::value 的大括号初始化将其从对象转换为数组

如何从 mysql 数据库构建 JSON 数组

从多维数组数据生成json字符串

Jackson 动态属性名称

如何使用 SwiftyJSON 将字符串转换为 JSON

如何使用 Jackson 注释从 HttpResponse 反序列化 JSON 对象?

从 JSON 创建 Hashtable

无法将空值放入 JSON 对象

如何在 JAVA 中对 JSONArray 进行排序

如何在 React js 中解析本地 JSON 文件?