- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
关于 SO 和其他资源有数千个 jackson 问题,我已经花了几个小时搜索,但仍然无法弄清楚。
我正在尝试使用 REST Web 服务,它以通常的单个对象 json 格式返回信息,例如:
{
"data" : { SomeData },
"meta: : {MetaInfo}
}
或使用数组:
{
"data" : [ {SomeData}, {SomeData} ],
"meta: : {MetaInfo}
}
SomeData 是一些 POJO 类,我需要解析它。服务中有几十个不同的 POJO 类。我不在乎MetaInfo
目前,但我认为解决我的问题也将有助于解决它。
我想每个 SomeData
使用一个 POJO 类类型来处理单个对象和数组的响应。而问题就出在这个data
我应该开始解析的节点。
问题:是否可以全局配置我的 ObjectMapper
仅解析来自 data
的信息节点?
所以,我想要这样的东西:
SomeData data = new ObjectMapper().fromNode("data").readValue(inputString, SomeData.class);
或使用数组:
List<SomeData> listData = new ObjectMapper().fromNode("data").readValue(inputString, new TypeReference<List<SomeData>>() {});
当然有一个解决方法 - 使用 wrapper
包含 data
的对象节点和 List<SomeData>
像:
@JsonIgnoreProperties(ignoreUnknown = true)
public class SomeDataWrapper {
@JsonProperty("data")
private List<SomeData> data;
public List<SomeData> getData() {
return data;
}
}
但从我的角度来看,这是一个开销。因此,我基本上应该拥有所需数量的两倍 + 从包装类中取出这些列表的开销。
预先感谢您的帮助!
编辑1:
我想全局配置ObjectMapper
寻找data
节点。我正在使用 Spring RestTemplate
当调用例如时,它会在下面处理反序列化restTemplate.exchange(..)
方法。所以我想将其委托(delegate)给 Spring,不想使用 JsonNode 手动解析每个端点响应/遍历响应数据。
编辑2:我知道我可以定义 @Bean
与 jackson 的Module
并注册自定义反序列化器,但我再次需要为每个 POJO 定义一个新的反序列化器类。这将是一个巨大的痛苦和样板
最佳答案
使用 ObjectMapper.readTree(String)
将 JSON 反序列化为 TreeNode
并选择要映射的路径,例如:
JsonNode node = new ObjectMapper().readTree(inputString)
.path("data");
然后使用 ObjectMapper.treeToValue(TreeNode, Class)
将 JsonNode
映射到 SomeData
数组:
SomeData[] data = jsonObjectMapper.treeToValue(node, SomeData[].class);
关于java - 全局配置ObjectMapper(通过@Bean或smth)从 "data"节点解析,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51865995/
这是我的设置: 带有自定义 MessageConverter 的 ObjectMapper 的 RestTemplate,它具有一些反序列化功能和问题处理程序 (Jackson Fasterxml 2
我们有一个基于 Spring 的应用程序,并且我们为 Jackson ObjectMapper 类定义了一个单例 bean。 @Bean(name = "jacksonObjectMapper") p
当依赖项中的 jar 中定义了另一个对象映射器时,如何使我的对象映射器工作? 我正在尝试使用 Swagger与 Jersey 2在 Jetty 下运行。问题是,一旦我将 Swagger JAX-RX
我刚刚更新到 Xcode 10.1 Swift 版本 4.2.1 我有几个构建错误: Invalid redeclaration of ' 3.3' $ pod 'ObjectMapper', '3.
您好,我是 IOS 开发的新手。我正在创建一个小应用程序。我正在尝试导入 ObjectMapper 但它没有找到任何模块。我已经安装了 pod。我的 pod 文件看起来像: target 'Sam
ObjectMapper 忽略字段大小写 核心代码: ObjectMapper mapper = new ObjectMapper(); mapper.configure(Deser
我加载一个资源文件json与文本格式 { "sources": [{ "prop1": "1", "prop2": "2" },
我有以下类(class): public class Car{ private String id; private String name; public Car() { } public Car(
使用 ObjectMapper 解析通用对象时出现错误这是我的类(class): class BaseResponse: NSObject, Mappable { var isSuccess:
我正在将印地语存储在数据库中。在我的 fetch 方法中,我使用 objectMapper 它将印地语字体转换为特殊字符。没有objectmapper它工作正常。 @CrossOrigin @
我正在尝试使用 Jackson ObjectMappper 将我的 Java POJO 转换为 Map。但是,在转换时,日期会更改为字符串。 这是我的 POJO: public class Sampl
我将日期传递为 "scoreTimestamp": "2015-04-15T10:00:00.000Z",并希望将此 json 作为字符串保存在数据库中,因此使用方法 ObjectMapper ob
使用 ObjectMapper 解析通用对象时出现错误这是我的类(class): class BaseResponse: NSObject, Mappable { var isSuccess:
我遇到了一个我不知道如何解决的问题。 当我尝试将此 JSON 映射到 User 对象时,它失败了: SwiftyJSON 在“2.3.3” JSON: { "results":[
我有一个自定义的 ObjectMapper 类。我想根据数据将元素映射到不同的对象类型。我已经实现了如下逻辑。但它没有给我值,只是 null。 class FeedObject : Object, M
我正在从服务器解析 json。我在 json 中获得了 4 个值,因此我创建了模型类 class PriceData: Mappable { var buy: Double? var sell: Do
我有这个映射器: import Foundation import ObjectMapper class Article: Mappable { var id: Int! var na
我有下面的一段代码,可以将带注释的 Java 对象转换为 Json 字符串。 try { String jsonString = mapper.writeValueAsStr
这个问题在这里已经有了答案: Jackson - Required property? (4 个答案) 关闭 7 年前。 假设我有这样的 json,我想将它反序列化为一个名为 SubscriberP
我有一个 JSON,我将其解析为结果对象列表。此对象包含 5 个字符串字段,称为 photo1、photo2 等。(基于 JSON)是否可以将它们直接读入列表字段? JSON 喜欢: { "E
我是一名优秀的程序员,十分优秀!