Как преобразовать Json с помощью болта?

Мне нужно преобразовать один JSON в другой JSON, Я новичок в jolt. Если у вас есть какие-либо другие методы в java, сообщите мне. Входные данные могут иметь множество других атрибутов во вложенном виде. Я должен сделать общий код, который может использовать все поля в JSON и преобразовывать его в желаемый результат, который я упомянул.

Вход

  {   
        "id": "123456789",
        "OrderType": "ABC",
        "Abc": [
           {
              "Name": "Pluto",
              "Value": "Charon"
           },
           {
              "Name": "Earth",
              "Value": "Moon"
           }
        ]
   }

Желаемый результат

  "MyFieldList": [
  {
    "Footer": "My Footer",
    "fieldList": [
      {
        "label": "id",
        "fieldName": "id",
        "fieldValue": "123456789",
        "editable": false, 
        "dataType": "STRING"
      },
      {
        "label": "OrderType",
        "fieldName": "OrderType",
        "fieldValue": "ABC",
        "editable": false, 
        "dataType": "STRING"
      },
      {
        "label": "Pluto",
        "fieldName": "Pluto",
        "fieldValue": "Charon",
        "editable": false, 
        "dataType": "STRING"
      },
      {
        "label": "Earth",
        "fieldName": "Earth",
        "fieldValue": "Moon",
        "editable": false, 
        "dataType": "STRING"
      }]
  }
  ]

Я пытался использовать эту спецификацию толчка, но я не могу понять, как сгладить вложенную часть.

 {
"operation": "shift",
"spec": {
    "*": {
      "$": "[#2].fieldName",
      "@": "[#2].fieldValue",
      "#false": "[#2].editable",
      "# ": "[#2].Size",
      "#STRING": "[#2].dataType"
    }
  }
 }

Ява != JavaScript.

Jack Bashford 10.02.2019 03:30

Извините, измененные теги.

drtvhood 10.02.2019 03:31
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
В компьютерном программировании биты играют важнейшую роль в представлении и манипулировании данными на двоичном уровне. Побитовые операции...
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Приходилось ли вам сталкиваться с требованиями, в которых вас могли попросить поднять тревогу или выдать ошибку, когда метод Java занимает больше...
Полный курс Java для разработчиков веб-сайтов и приложений
Полный курс Java для разработчиков веб-сайтов и приложений
Получите сертификат Java Web и Application Developer, используя наш курс.
0
2
59
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Важная часть — создание массива массивов, прежде чем превратиться в fieldList:

[
  {
    "operation": "shift",
    "spec": {
      "id": {
        "$": "[#1].[#1].fieldName",
        "@": "[#1].[#1].fieldValue",
        "#false": "[#1].[#1].editable",
        "#STRING": "[#1].[#1].dataType"
      },
      "OrderType": {
        "$": "[#2].[#1].fieldName",
        "@": "[#2].[#1].fieldValue",
        "#false": "[#2].[#1].editable",
        "#STRING": "[#2].[#1].dataType"
      },
      "Abc": {
        "*": {
          "Name": "[#3].[&1].fieldName",
          "Value": "[#3].[&1].fieldValue",
          "#false": "[#3].[&1].editable",
          "#STRING": "[#3].[&1].dataType"
        }
      }
    }
 },
  {
    "operation": "shift",
    "spec": {
      "*": {
        "*": "MyFieldList.fieldList.[]"
      }
    }
  },
  {
    "operation": "default",
    "spec": {
      "MyFieldList": {
        "Footer": "My Footer"
      }
    }
  }
]

Другие вопросы по теме