[英]How to retrieve Arraylist/list from json rest request and convert into pojo object (one of pojo variable is of list type.)
[英]How to convert list of json objects to pojo list of strings that contains some field from each object?
我有一个描述对象列表的JSON文档,它看起来像这样:
[
{
"txId": "ffff",
"sender" : "0xwwwwwww",
"recepient" : "0xeferfef"
},
{
"txId": "ffff",
"sender" : "0xwwwwwww",
"recepient" : "0xeferfef"
}
...
...
]
如何仅使用Jackson API从每个对象中获取包含txId
值的List<String>
(无需将此JSON转换为pojo对象列表,然后通过foreach处理此列表并创建新的字符串列表)?
您始终可以使用Jackson API将JSON文档作为JsonNode
对象读取(无需创建POJO)。 接下来,有几种读取和处理以JsonNode
对象表示的数据的方式。 Java 8+提供的最方便的方法之一是创建一个java.util.Stream<JsonNode>
并收集从JsonNode
到String
的映射结果的最终列表,其中String
表示node.txId
字段的值。
您可以使用以下命令创建java.util.Stream<JsonNode>
:
java.util.stream.StreamSupport.stream(jsonNode.spliterator(), false)
然后您可以调用map(node -> node.get("txId").textValue()
,最后调用collect()
终止流并获得预期的结果。
考虑以下代码作为示例(需要Java 8+):
import com.fasterxml.jackson.databind.JsonNode;
import com.fasterxml.jackson.databind.ObjectMapper;
import java.io.IOException;
import java.util.List;
import java.util.stream.Collectors;
import java.util.stream.StreamSupport;
final class JacksonReadExample {
public static void main(String[] args) throws IOException {
final String json = " [\n" +
" {\n" +
" \"txId\": \"ffff-001\",\n" +
" \"sender\" : \"0xwwwwwww\",\n" +
" \"recepient\" : \"0xeferfef\"\n" +
" },\n" +
" {\n" +
" \"txId\": \"ffff-002\",\n" +
" \"sender\" : \"0xwwwwwww\",\n" +
" \"recepient\" : \"0xeferfef\"\n" +
" }\n" +
"]";
final ObjectMapper mapper = new ObjectMapper();
final JsonNode jsonNode = mapper.readTree(json);
final List<String> ids = StreamSupport.stream(jsonNode.spliterator(), false)
.map(node -> node.get("txId").textValue())
.collect(Collectors.toList());
System.out.println(ids);
}
}
输出:
[ffff-001, ffff-002]
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.