无法使用 JOLT 正确转换嵌套数组

Unable to properly Transform nested array with JOLT

我正在尝试转换 json 嵌套数组的元素,但无法获得预期的结果,我正确地获得了 name 元素或 schemaExtensions 元素,但无法同时获得两者。

这是我的输入:

{
  "rows": [
    {
      "content": {
        "name": {
          "content": "User"
        },
        "schemaExtensions": {
          "content": [
            {
              "content": {
                "schema": {
                  "content": "User"
                },
                "required": {
                  "content": true
                }
              }
            }
          ]
        }
      }
    }
  ]
}

JOlt 规格定义:

  [
    {
      "operation": "shift",
      "spec": {
        "rows": {
          "*": {
            "content": {
              "name": {
                "content": "[&3].name"
              },
              "schemaExtensions": {
                "content": {
                  "*": {
                    "content": {
                      "schema": {
                        "content": "schemaExtensions.[&7].schema"
                      },
                      "required": {
                        "content": "schemaExtensions.[&7].required"
                      }
                    }
                  }
                }
              }
            }
          }
        }
      }
    }
]

预期结果:

[ {
  "name" : "User",
  "schemaExtensions": [ {
       "schema":"User",
       "required":true
    }]
}]

这是我在规范中同时包含两者时得到的结果

[ {
  "name" : "User"
} ]

如果我从我的规范中删除名称,那么我就会正确地获得我的 schemaExtensions:

{
  "schemaExtensions" : [ {
    "schema" : "urn:ietf:params:scim:schemas:extension:enterprise:2.0:User",
    "required" : true
  } ]
}
 [
      {
        "operation": "shift",
        "spec": {
          "rows": {
            "*": {
              "content": {
                "name": {
                  "content": "[].name"
                },
                "schemaExtensions": {
                  "content": {
                    "*": {
                      "content": {
                        "schema": {
                          "content": "[&7].schemaExtensions[&7].schema"
                        },
                        "required": {
                          "content": "[&7].schemaExtensions[&7].required"
                        }
                      }
                    }
                  }
                }
              }
            }
          }
        }
        }
    ]

你可以先从三层嵌套开始漫游,然后再显式写分支(name&schemaExtensions)。不用写其他键名如

[
  {
    "operation": "shift",
    "spec": {
      "*": {
        "*": {
          "*": {
            "name": { "*": "&1" },
            "schemaExtensions": {
              "*": {
                "*": { "*": { "*": { "*": "&5.&1" } } }
              }
            }
          }
        }
      }
    }
  }
]