2015-11-19 77 views
2

时要转换的JSON字符串使用杰克逊API可以使用POJO:JSON-简单与杰克逊解析JSON没有obj类型

String jsonInString = "{\"age\":33,\"messages\":[\"msg 1\",\"msg 2\"],\"name\":\"mkyong\"}"; 
User user1 = mapper.readValue(jsonInString, User.class); 

这就需要建立一个满足JSON字符串的结构类用户。

使用JSON-简单的API,可以改用:

JSONObject json = (JSONObject)new JSONParser().parse(jsonInString); 

使用JSON,简单并不需要包括JSON格式相匹配的POJO。杰克逊可以使用类似吗? json-simple不那么冗长,因为不必创建与json结构相匹配的类。

回答

2

可以使用类似的API

JsonNode node = mapper.readTree(jsonInString); 
3

杰克逊可以反序列化JSON字符串变成一个通用的映射:

Map<String, Object> m = new ObjectMapper().readValue(jsonInString, Map.class); 
for (Map.Entry<String, Object> entry : m.entrySet()) { 
    System.out.println(entry.getKey() + " -> " + entry.getValue() + "(" + entry.getValue().getClass().getName() + ")"); 
} 

输出:

age -> 33(java.lang.Integer) 
messages -> [msg 1, msg 2](java.util.ArrayList) 
name -> mkyong(java.lang.String)