使用JOLT解析器无法获得预期的输出。

问题描述 投票:0回答:1

我有以下 input:

[
  {
    "ownerId": "XTV7I728",
    "vehicleId": "999",
    "engines": [
      {
        "engineId": "1",
        "engineName": "Standard Engine",
        "engineHp": 300
      },
      {
        "engineId": "2",
        "engineName": "Custom Engine",
        "engineHp": 450
      }
    ]
  }
]

我需要 expected 输出如下。

    [{
      "ownerId": "XTV7I728",
      "vehicleId": "999",
      "engines":{
      "engineId": "1",
      "engineName": "Standard Engine",
      "engineHp": 300
}
    },
    {
      "ownerId": "XTV7I728",
      "vehicleId": "999",
"engines":{
      "engineId": "2",
      "engineName": "Custom Engine",
      "engineHp": 450
    }
}] 

我试了一下 spec 但却出现了一个错误。

[{
  "ownerId": "ownerId",
  "*": {
    "vehicleId": "vehicleId",
    "engineId": "engineId",
    "engineHp": "engineHp"
  }
}]

Error:

Error running the Transform.

JOLT Chainr 'operation' must implement Transform or ContextualTransform at index:0.  

请让我知道我哪里做错了。

java jolt
1个回答
1
投票

你必须指定操作(如果使用链式规范),然后再指定一个 spec 部分,对对象树进行实际的 "行走"。这应该是可行的。

[
  {
    "operation": "shift",
    "spec": {
      "*": {
        "engines": {
          "*": {
            "@(2,ownerId)": "[#2].ownerId",
            "@(2,vehicleId)": "[#2].vehicleId",
            "*": "[#2].&"
          }
        }
      }
    }
  }
]
© www.soinside.com 2019 - 2024. All rights reserved.