簡體   English   中英

需要使用Jackson來反序列化此JSON-[{},{},{}]-用於JSON數組的Jackson注釋是什么?

[英]Need to deserialize this JSON with Jackson - [{}, {}, {}] - What Jackson annotation to use for JSON array?

我目前正在編寫Java客戶端代碼,該代碼從rest服務獲取JSON響應。 對於我的JSON響應,我需要將其反序列化為pojo。 如果JSON的最外面的包裝器是包圍對象列表的方括號,那么可以使用哪種Jackson注釋將其加載到數組或ArrayList?

JSON如下所示:

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

Jackson可以直接將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

你可以試試這個

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM