Жестко закодированное значение, основанное на имени поля в спецификации толчка

Я использую JOLT для преобразования одного JSON в другой JSON, но я не получаю правильный выходной JSON для данного входного JSON

Вход:

{  
  "user":{  
        "homePhone":"12345678901",
        "mobilePhone":"12346750983",
        "email":"test@example.com"
   }
}

Ожидаемый Json:

{  
   "contact":[  
    {  
      "class":"PhoneClass",
      "phoneNumber":"12345678901",
      "mobile":false,
      "preferred":false
   },
   {  
      "class":"PhoneClass",
      "phoneNumber":"12346750983",
      "mobile":true,
      "preferred":true
   },
   {  
      "class":"EmailClass",
      "email":"test@example.com"
   }
]
}

В выводе json есть дополнительное поле, которое мне нужно добавить.

1 ответ

Насколько это динамично? Если для вашего примера вы знаете, что у вас есть эти три поля ввода и вам нужно три объекта вывода, эта спецификация должна работать:

[
  {
    "operation": "shift",
    "spec": {
      "user": {
        "homePhone": "contact[0].phoneNumber",
        "mobilePhone": "contact[1].phoneNumber",
        "email": "contact[2].email"
      }
    }
  },
  {
    "operation": "default",
    "spec": {
      "contact[]": {
        "0": {
          "class": "PhoneClass",
          "mobile": false,
          "preferred": false
        },
        "1": {
          "class": "PhoneClass",
          "mobile": true,
          "preferred": true
        },
        "2": {
          "class": "EmailClass"
        }
      }
    }
  }
]
Другие вопросы по тегам