- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
有没有办法动态启用/禁用 Jackson 的 ObjectMapper
中的 UNWRAP_ROOT_VALUE
和 WRAP_ROOT_VALUE
。
我必须根据调用的服务启用/禁用这些属性,有些请求需要 JsonRootName
而有些则不需要。
我在需要它的类中有 @JsonRootName
注释。
我有一个扩展 Jackson 对象映射器的自定义 ObjectMapper
类。
我正在调用一种方法来根据调用的服务启用/禁用属性,但它似乎不起作用。
public void setWrapValue(boolean wrap) {
final AnnotationIntrospector introspector = new JacksonAnnotationIntrospector();
this.configure(org.codehaus.jackson.map.DeserializationConfig.Feature.UNWRAP_ROOT_VALUE, wrap);
this.configure(org.codehaus.jackson.map.SerializationConfig.Feature.WRAP_ROOT_VALUE, wrap);
this.setDeserializationConfig(this.getDeserializationConfig().withAnnotationIntrospector(introspector));
this.setSerializationConfig(this.getSerializationConfig().withAnnotationIntrospector(introspector));
}
最佳答案
jackson-databind
有两个问题,
3.x
。没有 Jackson 的支持,除了手动将每个类包装到属性中之外,我认为除了编写更多代码之外别无他法。
一种方法是利用 JAXB 的特性,根据类似 XPath 的表达式对属性进行反序列化/序列化(即 foo/bar
会将属性包装在 foo
下),但是 jackson 不支持。
编辑:
我查看了代码、DefaultSerializerProvider
和周围。 jackson 2.9.9。Jackson 目前不区分“无属性名”和“默认属性名”。因此,AFAICT,DefaultSerializerProvider
不知道 @JsonRootName
是否存在或为空。
如果传播了这个区别,它就可以开始工作了。我在等待维护者判断。但是,如果 Jackson 本身没有变化,从外部进行此操作就有点不切实际了。
也许你可以有 2 个 ObjectMapper
,一个有 WRAP_ROOT_NAME
,一个没有,然后使用正确的那个。
但是,如果“一些请求需要它而一些不需要”(假设对于相同的端点),那就有点奇怪了。还是您的意思是对于某些端点,您需要包装用于其他端点的类型?那么也许可以使用简单的组合。很难说,请添加一些 JSON 示例和您的模型类。
关于java - 在 Jackson 的 ObjectMapper 中动态启用/禁用 UNWRAP_ROOT_VALUE 和 WRAP_ROOT_VALUE?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17187627/
这是我的设置: 带有自定义 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
我是一名优秀的程序员,十分优秀!