2

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

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

这需要创建与 json String 的结构匹配的类 User。

使用 json-simple API 可以改用:

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

使用 json-simple 不需要包含匹配 json 格式的 pojo。可以在杰克逊中使用类似的吗?json-simple 不那么冗长,因为不必创建匹配 json 结构的类。

4

2 回答 2

3

Jackson 可以将 json String 反序列化为通用 Map:

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)
于 2015-11-19T10:04:46.913 回答
2

您可以使用类似的 API

JsonNode node = mapper.readTree(jsonInString);
于 2015-11-19T10:06:38.103 回答