java - 反序列化内部 JSON 对象

标签 java json jackson

我有一个 POJO 类

Class Pojo {
String id;
String name;
//getter and setter
}

我有一个像这样的json

{
    "response" : [
        {
            "id" : "1a",
            "name" : "foo"
        }, 
        {
            "id" : "1b",
            "name" : "bar"
        }
    ]
}

我正在使用 Jackson ObjectMapper 进行反序列化。我怎样才能得到List<Pojo>不创建任何其他父类?

如果不可能,是否可以得到Pojo仅包含 json 字符串的第一个元素的对象,即在本例中 id="1a"name="foo"

最佳答案

您首先需要获取数组

String jsonStr = "{\"response\" : [ { \"id\" : \"1a\",  \"name\" : \"foo\"},{ \"id\" : \"1b\",\"name\" : \"bar\"  } ]}";
ObjectMapper mapper = new ObjectMapper();
JsonNode node = mapper.readTree(jsonStr);
ArrayNode arrayNode = (ArrayNode) node.get("response");
System.out.println(arrayNode);
List<Pojo> pojos = mapper.readValue(arrayNode.toString(), new TypeReference<List<Pojo>>() {});

System.out.println(pojos);

打印(使用toString())

[{"id":"1a","name":"foo"},{"id":"1b","name":"bar"}] // the json array 
[id = 1a, name = foo, id = 1b, name = bar] // the list contents

关于java - 反序列化内部 JSON 对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19096893/

相关文章:

javascript - 使用 json 将 infoWindow 添加到 map 标记

java - Jackson - @JsonValue 注释字段无法反序列化

json - 将两个不同的 JSON 字段名称映射到一个 POJO 属性

java - 如何查看 org.codehaus.jackson 日志消息 - 使用 logging.properties

java - “发布到本地主机上的 tomcat v7.0 服务器...”遇到错误

java - 尝试通过迭代字符串中的每个字符来限制每行的文本输出长度

json - Spring Security 和 JSON 身份验证

javascript - 用 "\\"写 JSON

java - 如何使用 HandlerThread 类将单独的循环器传递给线程

java - 邮件部分的内容 ID