java - ObjectNode 对象读取列表值
问题描述
我有一个类似这样的 JSON 响应:
{
"id_list":["123", "456", "789"],
...
}
我想知道如果我想使用 ObjectNode 来读取这样的 id 列表并返回一个 id 列表,例如,我应该怎么做。
我试着这样做:
List<String> sendBookIds = asStream(objectMapper.readValue(on.get("bookIds"), new TypeReference<List<String>>(){}))
.map(JsonNode::asText)
.flatMap(bookIds -> idResolver.fetchBookIds(bookIds).stream())
.distinct()
.collect(Collectors.toList());
但我有这个错误:
Cannot resolve method 'readValue(com.fasterxml.jackson.databind.JsonNode, anonymous com.fasterxml.jackson.core.type.TypeReference<java.util.List<java.lang.String>>
任何人都知道是否有一个神奇的缺失命令?如果没有,那么解决方案是什么?
解决方案
您可以"id_list"
在节点中读取您的属性,JsonNode
然后使用自定义ObjectReader
阅读器将其反序列化为List<String>
列表:
JsonNode node = mapper.readTree(json).get("id_list");
ObjectReader reader = mapper.readerFor(new TypeReference<List<String>>(){});
//the list will be ["123", "456", "789"]
List<String> idList = reader.readValue(node);
推荐阅读
- sql - 改进连接表的 SQL 查询
- laravel - 将 Laravel (with Valet) 与 Sequel Pro 连接,我该如何解决问题?
- python - 网络爬取域名问题
- reactjs - GraphQL 错误:Int 类型的变量 junctionId!用于期望 bigint 的位置
- ios - Flutter 我想设计这样的界面,你们能帮帮我吗?我正在设计一个关于页面,但我遇到了问题
- kdb - KDB+ 中符号数据类型的最大大小是多少?
- javascript - 使用 vue.js 更改按钮颜色并在单击时向子组件发送道具
- typescript - 在 TypeScript 中为影子根元素自定义 TestCafe 选择器
- vue.js - 未呈现动态列表
- django - 如何按升序创建数据库模型视图?