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

Yarik Soltys

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

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

   ...
]

如何仅使用Jackson API从每个对象中获取List<String>包含txId值的信息(无需将此JSON转换为pojo对象列表,然后通过foreach处理此列表并创建新的字符串列表)?

希蒙·斯蒂芬尼克

您始终可以JsonNode使用Jackson API将JSON文档作为对象读取(无需创建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]

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

如何将下面的json字符串转换为C#中的对象列表

如何将包含字典列表的字符串转换为Python对象?

如何将包含字典列表的字符串转换为 DICT 的 Python(对象)LIST

如何将包含字符串列表(内部列表)的对象列表转换为字符串列表

将 JSON 字符串数组转换为 C# 列表对象,为列表中模型的每个字段返回“空”值

将包含JSON对象列表的字符串转换为对象数组

如何将列表中字符串中的每个单词转换为列表中的元素

如何将包含日期字符串的 Python 字典列表强制转换为日期时间对象的 numpy 记录数组?

如何将列表对象转换为列表字符串(出现错误,无法转换类型的对象)

如何将Java对象转换为简单的json字符串而不将LocalDateTime字段转换为扩展的json对象?

java中如何将字符串转换为json字符串和对象

将 Json 对象列表的字符串转换为 JSON 对象列表

如何将列表中的每个元素转换为带引号的字符串

如何从对象中包含的对象列表中每个元素的字段中检索一组字符串?

如何将包含字符串的列表转换为包含整数的列表(Python)

如何将逗号分隔的字符串字段转换为 MongoDB 中的对象数组?

python - 如何将嵌套列表转换为包含字符串的列表?

如何将包含列表列表的文件转换为字符串?

如何将包含嵌入式对象的字符串转换为对象类型?

如何将C#对象转换为.NET中的JSON字符串?

如何将JSON字符串转换为JAVA android中的对象

如何将字符串列表转换为对象列表?

如何将字符串列表转换为对象列表

如何将列表映射转换为json字符串和json到列表映射

如何将字符串转换为字符列表?

将KeyEvent对象的列表转换为字符串

Pandas 将日期对象列表转换为字符串

将字符串csv转换为对象列表

将特定的字符串转换为类对象的列表