问题标签 [jackson-modules]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
jackson - 如何确保 Spring Boot 额外的 Jackson 模块具有相同的版本?
Spring Boot 已经包含了核心的 Jackson 依赖项 + 其他几个。
如果您想添加 org.json 或 jsr-353 数据绑定模块,您需要明确定义这些附加模块的版本。
有没有办法引用其他杰克逊模块的相同版本?我想避免任何兼容性问题。
java - Jackson 和 Guava 数据类型模块:忽略缺少的字段,但序列化显式空值
我将 RESTful 端点的测试数据存储在 json 中。我会将测试数据反序列化为 POJO 以传递给 REST Assured 进行测试。在底层,REST Assured 在构造请求对象时使用 Jackson 序列化 POJO。
我正在使用 Guava 数据类型模块来区分 json 中存在但设置为 null 的字段和根本不存在的字段。当json使用jackson和可选字段的guava数据类型模块反序列化为POJO时,json中缺少的字段在POJO中设置为null,而json中存在的那些字段值明确设置为null到 Optional.absent()。
当 POJO 由 Rest Assured 序列化(在 Jackson 的帮助下)构造 HTTP Reguest 对象时,我希望忽略“缺失”字段(POJO 中的 null),但那些存在的字段,但是显式设置为 null(POJO 中的 Optional.absent())以进行序列化。我不能使用 @JsonInclude(Include.NON_NULL) 注释,因为它排除了这两种情况,因为 Guava 数据类型模块中的 Serializer for Guava 数据类型处理它们的方式。我想要一种方法来覆盖此行为,同时保留我使用模块的能力。我不知道该怎么做。
这是我正在谈论的示例:
一旦上面的 json String 被反序列化,上面的 POJO 就会像这样被实例化:
当 POJO 被序列化回 json 时,我希望输出是测试数据中的内容:
但是,我得到的是:
如果我使用@JsonInclude(Include.NON_NULL),我会得到:
更新:
所以,我基本上破解了模块来做我想做的事。以下是我所做的更改:
在GuavaOptionalSerializer
中,我更改为仅在值是而不是如果是或isEmpty(Optional<?> value)
时才返回 true 。null
null
absent
在GuavaOptionalBeanPropertyWriter
我更改了serializeAsField
方法以首先处理抑制空值然后处理null
值:
现在,如果我想包含absent
字段(明确设置为null
)并排除简单“缺失”的字段,我使用@JsonInclude(Include.NON_EMPTY) annotation
.
java - 用于地图序列化的杰克逊模块
我有一个包含 Map (带有非 String 键)和其他一些字段的类。
我想使用杰克逊序列化和反序列化这个类。我看到了一种不同的方法,并决定尝试使用杰克逊模块。
我关注了这篇文章并扩展了 JsonDeserializer 和 JsonSerializer。问题是应该键入这些类,所以它应该看起来像
KeySerializer 也是如此。
然后添加到模块:
但这显然是错误的,因为我遇到了一个例外:
我可以将我的序列化器和反序列化器输入到MyClass,但是我不得不手动解析所有这些,这是不合理的。
更新:
我设法通过使用注释绕过代码中的模块创建
但是我必须自己从 toString() 输出序列化/反序列化整个映射结构。所以尝试了不同的注释:
MyKeyDeserializer 扩展org.codehaus.jackson.map.KeyDeserializer
并覆盖该方法的位置
然后手动反序列化我的密钥,但再次从我的密钥类的 toString() 输出。
这不是最优的(这种依赖于 toString() 方法)。有没有更好的办法?
json - jackson-module-scala:如何读取子类型?
有了这个jackson-module-scala
包装
我尝试阅读子类型(这只是没有实际工作的简化用例):
但是这种尝试会导致错误:
任何人都可以建议一种解决方法来获得预期的行为吗?
java - @JsonCreator 和通过模块的 mixin 不适用于第 3 方类
我正在尝试反序列化没有默认无参数构造函数的 java.net.HttpCookie 并得到: org.codehaus.jackson.map.JsonMappingException: No适合类型 [simple type, class java.net. HttpCookie]:无法从 JSON 对象实例化(需要添加/启用类型信息?)在 [Source: java.io.StringReader@5a395674; 行:1,列:35
这是 jackson-mapper-asl v 1.9.13
我发现Jackson 3rd Party Class With No Default Constructor并尝试通过 getDeserializationConfig 和 using 模块使用他们的解决方案。我在下面介绍模块代码。
在服务器端点的构造函数中,我有以下内容:
我看到在我的日志中的反序列化异常之前记录了“设置混合注释”。我没看到“混心叫!” 曾经(尽管我不确定是否会调用 mixin 构造函数中的代码)。有人可以告诉我我的错误吗?我需要注释 java.net.HttpCookie 中的所有字段吗?
http://docs.oracle.com/javase/7/docs/api/java/net/HttpCookie.html
java - jackson - 不要序列化惰性对象
我有一个实体:
然后我有一个控制器,其目的是检索书籍,我的问题是,流派字段包含在我的控制器的 json 响应中。当杰克逊序列化对象时,我有什么办法可以排除那些延迟加载的字段?
这是我的 ObjectMapper 的配置:
谢谢!
我不能将它标记为 JsonIgnore,因为它将永远脱离序列化框。有时我需要检索书籍的类型,到那时我将在我的查询中使用“fetch join”,这样它就不会为空。
java - 使用 Jackson 在 JAVA 中生成自定义 JSON Schema
当 POJO/Bean 在其中嵌套参数时,我对此并不陌生,并且正在为用例而苦苦挣扎。
要求-
使用 Jackson(最新版本可以)为 JAVA Bean/POJO 类生成 JSON 模式,以便它正确包含嵌套对象的结构,并且还希望向嵌套的 pojos 添加自定义属性(在我的情况下,想要添加一个每个嵌套 POJO 参数的完全分类的类名属性)。
用例-
说,我有一个 Person 类,如下所示。我正在使用这个人作为我的一些操作的参数。-
例如,当上面的 Person 类用作参数时,当前会生成以下 JSON Schema -
Person 类有一些多值数据结构,如MAP、ARRAY,也可以有嵌套的POJO。所以我不想为这些类型的BEAN/POJO类生成 JSON 模式,并且还想为每个嵌套的POJO/BEAN放置一个“类名”节点,具有完全分类的类名。
我为此经历了很多事情,但我无法为使用杰克逊的这种情况找出一个捷径。
这里要注意的要求是将“classname”属性放在嵌套的 POJO 属性模式中。
这个问题肯定与此有关 - How to traverse generated json schema using jackson and put custom attribute in json schema
json - 基于hibernate验证器注解的Json验证模式生成
我有一个用休眠验证器注释注释的 POJO:
从这个 POJO 我希望能够生成一个看起来像这样的模式:
有没有能够做到这一点的图书馆?
我正在查看https://github.com/FasterXML/jackson,但我没有看到对此的开箱即用支持。
指针将非常受欢迎!谢谢!
java - Jackson:json 模式引用了其他模式,可以禁用吗?
当我使用 Jackson Json-Schema-Module 时,我的模式是使用相互指向的引用生成的。
考虑这个模式:
这是 POJO1 中的一个属性对象
我在 POJO2 中有相同的属性对象,当两个模式都生成时,我在 POJO2 中得到以下内容:
但我希望 POJO2'a 模式中的这个属性与 POJO1 模式中的相同,我不想要引用。这可以禁用吗?或者有解决方法吗?
这是我使用的代码:
起初我以为如果为每个模式构造使用不同的 ObjectMapper 实例,我会得到我想要的,但事实并非如此,显然有某种缓存,我对这些事情的了解还不够深,无法得出正确的结论。
谢谢!
json - 从 Java 类生成 JSON 模式
我有一个 POJO 类:
是否有任何注释或开发框架/API 可以将 POJO 转换为 JSON 模式,如下所示:
我还可以"Required" : "Yes"
通过在 POJO 上指定一些注释或配置来扩展模式以添加信息,例如每个字段的描述等,并且可以生成如下所示的 JSON 模式: