使用Jolt Spec转换JSON时出现的问题

时间:2019-03-07 13:21:42

标签: jolt

我正在尝试更改以下输入的转换规范:

{
  "a": {
    "serviceTesta": "Testa1",
    "b": {
      "serviceTestb": "Testb1",
      "c": [
        {
          "name": "x",
          "value": "100",
          "desc": "this is description of X"
        },
        {
          "name": "y",
          "value": "200",
          "desc": "this is description of y"
        }
      ]
    }
  }
}

,预期输出如下:

[
  {
    "Testa1_Testb1_x": "100",
    "Testa1_Testb1_x_desc": "this is description of X"
  },
  {
     "Testa1_Testb1_y": "100",
    "Testa1_Testb1_y_desc": "this is description of y"
  }
]

我的规格:

[
  {
    "operation": "shift",
    "spec": {
      "a": {
        "b": {
          "c": {
            "*": {
              "value": "@(4,serviceTesta).@(3,serviceTestb)@(1,name)"
            }
          }
        }
      }
    }
 }

 ]

我是新来的人,尝试了不同的方法,但是无法获得想要的输出。 我们非常感谢您的帮助。

谢谢

1 个答案:

答案 0 :(得分:0)

您可以通过对转换进行二次移位来获得所需的结果:

使用*&n的组合来构建密钥。

[
  {
    "operation": "shift",
    "spec": {
      "a": {
        "b": {
          "c": {
            "*": {
              "value": "@(4,serviceTesta).@(3,serviceTestb).@(1,name)"
            }
          }
        }
      }
    }
  },
  {
    "operation": "shift",
    "spec": {
      "*": {
        "*": {
          "*": {
            "@": "&3_&2_&1"
          }
        }
      }
    }
  }
]