Я пытаюсь преобразовать входной JSON, используя спецификацию JOLT.Мой вход имеет элемент ответа, который может иметь одно текстовое значение (случай 1) ИЛИ элемент JSON (случай 2), как показано ниже
JOLT Spec:
[
{
"operation": "shift",
"spec": {
"@(1,status)": {
"@(2,output)": {
"response": "statusMessage"
},
"TERMINATED": {
"@(2,status)": "statusMessage"
},
"FAILED": {
"@(2,response)": "statusMessage"
},
"COMPLETED": {
"@(2,status)": "statusMessage"
}
},
"status": "status"
}
}
]
Вход (не-JSON)элемент ответа).---- Случай 1
{
"createTime": 1555623377858,
"updateTime": 1555623378681,
"status": "FAILED",
"output": {
"response": "Connection error."
}
}
Ввод (элемент ответа JSON).---- Случай 2
{
"createTime": 1555623377858,
"updateTime": 1555623378681,
"status": "FAILED",
"output": {
"response": {
"headers": {
"ETag": [
"W/\"5-fy9qFc+NorJ+Wkr0e1jnrXHAs9k\""
],
"Connection": [
"keep-alive"
],
"Content-Length": [
"5"
],
"Date": [
"Thu, 18 Apr 2019 21:36:18 GMT"
],
"Content-Type": [
"text/html; charset=utf-8"
],
"X-Powered-By": [
"Express"
]
},
"reasonPhrase": "Internal Server Error",
"body": "Error",
"statusCode": 500
}
}
}
Как мне указать спецификацию JOLT, если я хочу назначить "reasonPhrase" для statusMessage в случае, когда ответ содержит элемент JSON?
Мой вывод долженвыглядеть ниже
Case 1 response should look like.
{
"statusMessage" : "Connection Error",
"status" : "FAILED"
}
Case 2 response should look like this.
{
"statusMessage" : "Internal Server Error",
"status" : "FAILED"
}