如何在 Jolt 中的多个地方使用相同的字段值

How to use same field value at multiple places in Jolt

我有转换 JSON 的要求,我试图多次使用相同的值。有没有办法多次使用值,我以前确实在数组中使用过,但这次我必须通过关卡。感谢您提供任何帮助。

注意我想根据名称过滤产品配置。

如何在 Jolt 中的多个地方使用相同的字段值

输入:

{
  "sample": {
    "Result": {
      "value": {
        "ImplProductConfigurationsOptionsEcomResponse": {
          "transactionId": "12345678",
          "timeStamp": 1646087177771,
          "orderCorrelationId": "11039714",
          "implValidateMultiProductConfigurationsResponse": {
            "productConfigurations": [
              {
                "productConfiguration": {
                  "productSpecification": {
                    "name": "Private",
                    "id": "247541"
                  }
                }
              },
              {
                "productConfiguration": {
                  "productSpecification": {
                    "name": " sample Miscellaneous",
                    "id": "22222"
                  }
                }
              }
            ]
          }
        }
      }
    }
  }
}

当前输出:

{
  "productConfigurations": {
    "productConfiguration": {
      "productSpecification": {
        "name": "Private",
        "id": "247541"
      }
    }
  }
}

预期输出:

{
  "productConfigurations": {
    "productConfiguration": {
      "productSpecification": {
        "name": "Private",
        "id": "247541"
      }
    }
  },
  "Details": {
    "ImplProductConfigurationsOptionsEcomResponse": {
      "transactionId": "12345678",
      "timeStamp": 1646087177771,
      "orderCorrelationId": "11039714",
      "implValidateMultiProductConfigurationsResponse": {
        "productConfigurations": [
          {
            "productConfiguration": {
              "productSpecification": {
                "name": "Private",
                "id": "247541"
              }
            }
          },
          {
            "productConfiguration": {
              "productSpecification": {
                "name": " sample Miscellaneous",
                "id": "22222"
              }
            }
          }
        ]
      }
    }
  }
}

我的规格:

[
  {
    "operation": "shift",
    "spec": {
      "sample": {
        "Result": {
          "value": {
            "ImplProductConfigurationsOptionsEcomResponse": {
              "implValidateMultiProductConfigurationsResponse": {
                "productConfigurations": {
                  "*": {
                    "productConfiguration": {
                      "productSpecification": {
                        "name": {
                          "*Miscellaneous": null,
                          "*": {
                            "@4": "productConfigurations"
                          }
                        }
                      }
                    }
                  }
                }
              }
            }
          }
        }
      }
    }
  }
]

您可以引用对象两次以及 shift 转换规范,例如

[
  {
    "operation": "shift",
    "spec": {
      "*": {
        "*": {
          "*": {
            "*": {
              "*": "Details.&1.&",
              "implValidateMultiProductConfigurationsResponse": {
                "*": {
                  "*": {
                    "*": {
                      "*": {
                        "name": {
                          "*Miscellaneous": {
                            "@3": "Details.&8.&7.&6[].&4"
                          },
                          "*": {
                            "@4": "&6",
                            "@3": "Details.&8.&7.&6[].&4"
                          }
                        }
                      }
                    }
                  }
                }
              }
            }
          }
        }
      }
    }
  }
]

网站上的演示http://jolt-demo.appspot.com/