gpt4 book ai didi

java - 如何将 json 对象列表转换为包含每个对象的某些字段的 pojo 字符串列表?

转载 作者:行者123 更新时间:2023-11-29 07:26:22 27 4
gpt4 key购买 nike

我有一个描述对象列表的 JSON 文档,它看起来像这样:

[
{
"txId": "ffff",
"sender" : "0xwwwwwww",
"recepient" : "0xeferfef"
},
{
"txId": "ffff",
"sender" : "0xwwwwwww",
"recepient" : "0xeferfef"
}
...

...
]

我怎样才能得到 List<String>包含 txId仅使用 Jackson API 来自每个对象的值(不将此 JSON 转换为 pojo 对象列表,然后通过 foreach 处理此列表并创建新的字符串列表)?

最佳答案

您始终可以将 JSON 文档读取为 JsonNode使用 Jackson API 的对象(无需创建 POJO)。接下来,有几种读取和操作表示为 JsonNode 的数据的方法。目的。 Java 8+ 提供的最方便的方法之一是创建一个 java.util.Stream<JsonNode>并收集来自 JsonNode 的映射结果的最终列表至 String , 其中String is 表示 node.txId 的值字段。

您可以 create java.util.Stream<JsonNode> with :

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]

关于java - 如何将 json 对象列表转换为包含每个对象的某些字段的 pojo 字符串列表?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52036818/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com