我正在使用JOLT将SON数组转换为SON数组,但无法按预期进行转换.我有以下输入json(简化):

{
  "object": {
    "settings": [
      {
        "key": {
          "id": 1
        },
        "rec": {
          "value": "value 1"
        }
      },
      {
        "key": {
          "id": 2
        },
        "rec": {
          "value": "value 2"
        }
      },
      {
        "key": {
          "id": 3
        },
        "rec": {
          "value": "value 3"
        }
      }
    ],
    "customer": [
      {
        "key": {
          "id": 4
        },
        "rec": {
          "address": "some address"
        }
      }
    ]
  },
  "date": "2024"
}

我想将所有对象的记录转换为这样的扁平数组

[ {
  "date" : "2024",
  "id" : 4,
  "address" : "some address"
}, {
  "date" : "2024",
  "id" : 1,
  "value" : "value 1"
}, {
  "date" : "2024",
  "id" : 2,
  "value" : "value 2"
}, {
  "date" : "2024",
  "id" : 3,
  "value" : "value 3"
} ]

我最新的try 是以下震动:

[
  {
    "operation": "shift",
    "spec": {
      "object": {
        "customer": {
          "*": {
            "@3,date": "[&1].[0].date",
            "key": {
              "id": "[&2].[0].id"
            },
            "rec": {
              "address": "[&2].[0].address"
            }
          }
        },
        "settings": {
          "*": {
            "@3,date": "[&1].[1].date",
            "key": {
              "id": "[&2].[1].id"
            },
            "rec": {
              "value": "[&2].[1].value"
            }
          }
        }
      }
    }
  },
  {
    "operation": "shift",
    "spec": {
      "*": {
        "@0": {
          "*": "[&1]"
        }
      }
    }
  }
]

但结果是:

[ [ {
  "date" : "2024",
  "id" : 4,
  "address" : "some address"
}, {
  "date" : "2024",
  "id" : 1,
  "value" : "value 1"
} ], {
  "date" : "2024",
  "id" : 2,
  "value" : "value 2"
}, {
  "date" : "2024",
  "id" : 3,
  "value" : "value 3"
} ]

请帮忙修复.提前感谢.

推荐答案

不错的try !相反,只是try 编排100(为了代表常见的key)与101(为了代表layervalue)外卡,例如

[
  { // form separated objects as desired
    "operation": "shift",
    "spec": {
      "object": {
        "settings|customer": {//they both use the common depth level for the attributes
          "*": {
            "@3,date": "&2_&1.date",
            "*": {
              "*": "&3_&2.&"
            }
          }
        }
      }
    }
  },
  { // get rid of the object keys and return array of objects with no key
    "operation": "shift",
    "spec": {
      "*": "[]"
    }
  }
]

Json相关问答推荐

如何在JMESPath中区分空和假?

如何在数组抖动中按值分组

Azure Data Factory JSON输出格式问题

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

集成wix.comstore API|变音符号问题

NoneType 对象的 Python 类型错误

使用 jq,如何将两个属性构成键的对象数组转换为对象的索引对象?

Jolt 变换 - 如何用字段值重命名字段?

将来自 Golang 的 JSON API 调用响应输出到 nextjs 前端

在Flutter 中将 map 的 Json 转换为 list

流编写器未写入 webapi 中的 JSON 文件

jq搜索特定字符串并输出对应的父值

字典和对象的模型创建问题

为什么在我们有 json_encode 时使用 CJSON 编码

Java JSON 序列化 - 最佳实践

十六进制格式可以与 JSON 文件一起使用吗?如果是这样,怎么做?

如何使用 Jackson 定义可选的 json 字段

嵌套 JSON:如何向对象添加(推送)新项目?

Jackson:忽略 Json 配置值

Javascript:如何判断 AJAX 响应是否为 JSON