Нужно десериализовать этот JSON с Джексоном - [{}, {}, {}] - Какую аннотацию Джексона использовать для массива JSON? - PullRequest
0 голосов
/ 11 апреля 2019

В настоящее время я пишу код клиента Java, который получает ответ JSON от службы отдыха.Для моего ответа JSON мне нужно десериализовать его в pojo.Если большинство внешних оболочек JSON представляют собой квадратные скобки, которые заключают в себе список объектов, какую аннотацию Джексона я могу использовать для загрузки ее в массив или ArrayList?

JSON выглядит так:

[{"key1": "val1"}, {"key2": "val2"}, {"key3": "val3"}]

Ответы [ 2 ]

0 голосов
/ 11 апреля 2019

вы можете попробовать это

String json = "[{\"key1\": \"val1\"}, {\"key2\": \"val2\"}, {\"key3\": \"val3\"}]";
ObjectMapper mapper = new ObjectMapper();
ArrayList<Map<String,String>> list = mapper.readValue(json, Object.class);
for (Map map : list)
    for (Object key :map.keySet()) 
        System.out.println("key: "+key.toString()+" value:"+map.get(key));
//result
//key: key1 value:val1
//key: key2 value:val2
//key: key3 value:val3
0 голосов
/ 11 апреля 2019

Джексон может отменять вызов JSON непосредственно на ваш объект, наоборот.

public void givenJsonArray_whenDeserializingAsArray_thenCorrect() 
  throws JsonParseException, JsonMappingException, IOException {

    ObjectMapper mapper = new ObjectMapper();
    List<MyDto> listOfDtos = Lists.newArrayList(
      new MyDto("a", 1, true), new MyDto("bc", 3, false));
    String jsonArray = mapper.writeValueAsString(listOfDtos);

    // [{"stringValue":"a","intValue":1,"booleanValue":true},
    // {"stringValue":"bc","intValue":3,"booleanValue":false}]

    MyDto[] asArray = mapper.readValue(jsonArray, MyDto[].class);
    assertThat(asArray[0], instanceOf(MyDto.class));
}

источник: https://www.baeldung.com/jackson-collection-array

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...