震动JSON转换器

我想使用jolt将给定的json转换为给定的格式:-

输入JSON

{
  "dataType": "XYZ","payload": {
    "Revision": 0,"identifier2": {
      "xyz": 215,"version": 1,"revision": 1,"Type": 12
    },"timestamp": "2019-12-10T06:24:01.708Z","Currency": "SEK","identifier3": {
      "xyz": 170,"revision": 5,"Type": 40
    }
  },"datatype1": "ABC"
}

**Output JSON:-**

   {
  "dataType": "XYZ","Currency": {
      "Value": "SEK","Domain": null
    },"datatype1": "ABC"
}

我的SPEC:-

      [
        {
          "operation": "shift","spec": {
            "payload": {
              "Currency": {
                "*": {
                  "$": "&2.Value","@": "&2.Domain"
                }
              },"*": "payload.&"
            },"*": ".&"
          }
      }
]

当我使用此规范时,将货币标签移出有效负载。请告诉我正确的做法。我可以使用此规格拆分货币,但将其移出有效载荷标签。

xzj700106 回答:震动JSON转换器

您的&2.Value 映射规则将&2 (货币)放在顶层,如果您将该映射规则更改为 payload。&2.Value &3.&2.Value ,它将按预期放置在有效载荷下。

我使用jolt-demo website

测试了所有JOLT规范

快速修复

具有文字有效负载

[
  {
    "operation": "shift","spec": {
      "payload": {
        "Currency": {
          "*": {
            "$": "payload.&2.Value","@": "payload.&2.Domain"
          }
        },"*": "payload.&"
      },"*": ".&"
    }
  }
]

使用通配符&3 (比当前位置高3级):

[
  {
    "operation": "shift","spec": {
      "payload": {
        "Currency": {
          "*": {
            "$": "&3.&2.Value","@": "&3.&2.Domain"
          }
        },"*": ".&"
    }
  }
]

采取疯狂的冲刺

以防您的预期输入文档与您提供的示例JSON格式相同:

{
  ...
  "payload": {
    ...
    "Currency": "value"
    ...
  }
  ...
}

并且您不希望 payload.C​​urrency 采用以下形式:

...
"Currency": {
  "key": "value","key1": "value1",...
}
...

您的最终目标是将 payload.C​​urrency 的值映射到 payload.C​​urrency.Value ,并添加默认值 null payload.C​​urrency.Value (如果为空), payload.C​​urrency.Domain (根据您的示例输出)

然后,您可以考虑使用更直接/更简单的SPEC:

[
  {
    "operation": "shift","spec": {
      "payload": {
        "Currency": "&1.&.Value","*": "&1.&"
      },"*": "&"
    }
  },{
    "operation": "default","spec": {
      "payload": {
        "Currency": {
          "Value": null,"Domain": null
        }
      }
    }
  }
]
本文链接:https://www.f2er.com/2836018.html

大家都在问