Java: преобразовать объект JSON в пользовательский JSON - PullRequest
0 голосов
/ 05 июня 2018

Преобразованный ответ SOAP в JSON (с использованием API), поэтому сейчас требуется пользовательский ответ JSON, в котором удаляются некоторые атрибуты и изменяются имена полей.как примеры ниже.

Пример:

{
  "s:Envelope": {
    "xmlns:s": "http://schemas.xmlsoap.org/soap/envelope/",
    "s:Body": {
      "Response": {
        "xmlns": "http://www.tempuri.org/",
        "Result": {
          "xmlns:a": "http://wwww.datacontract.org/",
          "a:CodeSet": [
            {
              "a:FullDescription": {
                "i:nil": true
              },
              "a:AgeFrom": {
                "i:nil": true
              },
              "a:ShortDescription": {
                "i:nil": true
              },
              "a:Code": "111111",
              "a:LongDescription": "Have a Nice Day",
              "a:EffectiveDate": "01/01/2017"
            },
            {
              "a:FullDescription": {
                "i:nil": true
              },
              "a:AgeFrom": {
                "i:nil": true
              },
              "a:ShortDescription": {
                "i:nil": true
              },
              "a:Code": "222222",
              "a:LongDescription": "Long Working Day",
              "a:EffectiveDate": "01/01/2018"
            }
          ]
        }
      }
    }
  }
}

Кому:

   {
  "data": [
    {
      "CODE": "111111",
      "EFFECTIVE_DATE": "2017-01-01",
      "TERM_DATE": "9999-12-31",
      "AGE_FROM": "true",
      "SHORT_DESC": "HND",
      "LONG_DESC": "Have a Nice Day"
    },
    {
      "CODE": "2222222",
      "EFFECTIVE_DATE": "2018-01-01",
      "TERM_DATE": "9999-12-31",
      "AGE_FROM": "true",
      "SHORT_DESC": "LWD",
      "LONG DESC": "Long Working Day"
    }
  ]
}

Предложения по простому способу его преобразования, означает какой-либо API или аннотации, которые это делают?Примечание. Время ответа уже больше 15 секунд.

Ответы [ 2 ]

0 голосов
/ 05 июня 2018

Вы можете попробовать использовать JSON-P 1.1.Вот пример из блога Адама Бина:

import javax.json.Json;
import javax.json.JsonArray;
import javax.json.JsonArrayBuilder;
import javax.json.JsonObject;
//...

@Test
public void jsonObjectUpdate() {
    String key = "update";
    String JAVA_EE_8 = "is easy with Java EE 8";

    JsonObject initial = Json.createObjectBuilder().
        add(key, "was hard in Java EE 7").
        build();

    JsonObject updated = Json.createObjectBuilder(initial).
        add(key, JAVA_EE_8).
        build();

    assertThat(updated.getString(key), is(JAVA_EE_8));
    assertThat(updated.size(), is(1));
}

Полная статья здесь: http://www.adam -bien.com / roller / abien / entry / update_jsonobjects_with_json_p

Или, если вы хотите более объектно-ориентированный подход, вы должны добавить собственную реализацию JsonObject (это опять-таки спецификация JSON-P).Ваша реализация будет принимать в ctor исходный JsonObject и реализовывать логику для извлечения и возврата этого data JsonArray из него.

0 голосов
/ 05 июня 2018

Сделайте, как показано ниже

  1. Напишите два класса, которые отображают две строки json.
  2. Преобразование первой строки json в соответствующий ей объект json
  3. Напишите логику для сопоставления объекта из шага 2 с вашим вторым объектом
  4. Преобразование вашего второго объекта в строку JSon.

Примечание. Существует множество способов конвертации в / из json-объекта Java из / в Json String, и в Интернете доступно множество ресурсов для изучения.Я оставил это для вас, чтобы исследовать, что лучше для ваших нужд.

...