Jolt变换使用两个2值来创建新的键/值对

时间:2017-08-02 22:08:07

标签: json transform jolt

我有一个JSON输入,我使用JOLT shift进行转换。我的问题是我想使用输入键的值,作为输出数据中的新键,并且并行地向该新输出键添加另一个值。以下是我的意见:

"Description": {
  "Name": "John",
  "KeyNameId": "John123",
  "Description": "John's description"
}

我希望我的输出为:

"Description": {
  "John123": "John's description"
}

无论如何不使用两个班次操作来做到这一点? 或者如果不可能有两个班次?

2 个答案:

答案 0 :(得分:2)

是的,可以使用“@(Number,words)”运算符在一个班次中完成。

输入 - 为清晰起见略微修改

{
  "Top": {
    "Name": "John",
    "KeyNameId": "John123",
    "Description": "John's description"
  }
}

规格

[
  {
    "operation": "shift",
    "spec": {
      "Top": {
        // match the key "Description" and copy it's value to the Output.
        // The Output path being defined by @(1,KeyNameId), which means
        //  go back up the tree 2 levels (0,1) and lookup the value of 
        //  "KeyNameId"
        "Description": "@(1,KeyNameId)"
      }
    }
  }
]

答案 1 :(得分:0)

更准确地说,

[
  {
    "operation": "shift",
    "spec": {
      "Description": {
        "@Description": "Description.@KeyNameId"
      }
    }
  }
]