json-当没有 obj 类型时,简单与 jackson 解析 json

json-simple versus jackson for parsing json when do not have obj type

要使用 jackson API 将 json 字符串转换为 pojo,可以使用:

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

这需要创建 class 匹配 json 字符串结构的用户。

使用 json-简单 API 可以改用:

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

使用json-简单不需要包含匹配json格式的pojo。 jackson 可以使用类似的吗? json-simple 不那么冗长,因为不必创建匹配 json 结构的 class。

Jackson 可以将 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)

你可以使用类似的API

JsonNode node = mapper.readTree(jsonInString);