问题标签 [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.

0 投票
1 回答
142 浏览

java - jackson 2.4 在反序列化时寻找旧类

我正在使用 tomcat 7 和 jdk 1.6 开发一个宁静的服务。对于 json 处理,我使用的是 jackson 2.4.2,它工作正常,除非我尝试反序列化一个对象(序列化没有问题)。

错误是:

这是杰克逊 1.x 保留该特定类的地方。我的杰克逊 2.4.2 在

我不知道它为什么要尝试链接旧课程。我从未使用过杰克逊 1.x。

我用什么:

我从github上拿的。什么库可以尝试导入旧的杰克逊模块?任何帮助将非常感激。

0 投票
1 回答
4002 浏览

java - @JsonPropertyOrder 不适用于 jackson-module-jsonSchema

我正在使用 Jackson 模块的最新分支 - jackson-module-jsonSchema,即 2.4.4-Snapshot。

我正在尝试使用 @JsonPropertyOrder 注释来维护 POJO 属性的顺序,但它似乎不尊重注释。

我的示例 POJO 如下 -

杰克逊代码如下 -

Json输出如下 -

有人可以建议我是否做错了什么,或者我们是否需要针对杰克逊提出问题,因为我看到此类问题已在 2.3.2 中关闭(https://github.com/FasterXML/jackson-数据格式-xml/issues/91)?

0 投票
3 回答
3784 浏览

java - Spring MVC 配置 + Jackson + Guava 多图

我正在为此苦苦挣扎:

我们有一个带有 Guava 多图的 Table 类(简化的代码,基本上是 1 个成员,2 个构造函数,多图的 getter 和 setter):

我想使用 Spring MVC 3.2.11 使用 jackson 2.4.3 序列化它。

POM 相关依赖项是:

我的 spring.xml现在看起来像这样(按照这个例子

使用扩展的 Jackson2ObjectMapperFactoryBean 尝试了另一种方法:

然后 FactoryBean 看起来像这样:

}

我有一个工作正常的测试类,根本没有使用 Spring(只是测试 Table.class + Jackson + guava) 简化:

它正确地序列化它:

使用弹簧(两种方法中的任何一种)我得到:

我的控制器有一个 @ResponseBody 注释,它返回一个表。

编辑:我正在深入调试 spring 类(第一次,;-))和 org.springframework.web.servlet.mvc.method.annotation.RequestResponseBodyMethodProcessor 正在处理请求。这与我的问题有关吗...我的 spring xml 是否与 @ResponseBody 注释相矛盾?

任何想法我做错了什么?

注意:我需要 Multimap,不能是标准的 Java 集合。

0 投票
2 回答
4776 浏览

java - 杰克逊更新部分对象

这就是我想要做的。假设我有 2 个 json 输入。

第一的

第二

我有课

所以在这个之后我得到了

我想去哪里

请让我知道我是否遗漏了杰克逊的某些东西或者没有这样的功能,我需要自己编写。

由于没有直接的对话来做我想要的,所以我为 json 节点写的东西做同样的事情。合并/覆盖节点和合并/覆盖数组的两个函数。这通过传递 2 个 json 节点来工作,希望如果有人正在寻找类似的东西会有所帮助

0 投票
0 回答
140 浏览

java - 将自定义 DeserializerFactory 添加到 Jackson 2 ObjectFactory

我正在尝试从 Jackson 1.x 升级到 2.x。

我遇到问题的一个领域是我使用自定义 DeserializerFactory 它看起来像这样:

setDeserializerProvider 现在在 Jackson2 中消失了(尽管 setSerializerProvider 仍然存在)。我正在考虑使用 SimpleModule ,但这也没有我需要的东西。

这应该如何在2中工作?

更新:我觉得有必要强调它需要是一个工厂。不仅仅是注册一个反序列化器。

自定义工厂将信息传递给反序列化器,如下所示:

对于包含不同类型的集合,该值 (contentDeserializer) 在运行时是不同的。

0 投票
3 回答
22938 浏览

java - 从 POJO 生成 Json Schema

我有的:

我正在从 pojo 生成 JSON 模式。我生成架构的代码如下所示:

我通过上面的代码生成了几个模式。其中一个 pojo 有一个内部嵌入的枚举来限制可能的值,如下所示:

上面的代码应该限制传递到“星期一”、“星期二”、“星期三”等的 JSON 数据中可能的字符串值。

当我在相关代码上运行模式生成器时,我希望得到类似于以下模式的内容:

但相反,我得到了这个:

我已经在 J​​ackson Schema Module 源代码中进行了一些挖掘,并发现正在发生的事情是 Jackson 使用“.toString()”作为枚举类型的默认序列化方法,但我需要它做的是创建行看起来像这样基于StartDayOfWeek.values()

有谁知道这是怎么做到的吗?

0 投票
1 回答
1563 浏览

json - CsvParser“找不到适合类型的构造函数”

我正在尝试使用 Jackson CsvParser 读取一个简单的 CSV 文件。我已经按照教程进行操作,但我不断收到以下错误:

CSV 文件 MYFILE.CSV 非常简单:

代码也是如此:

0 投票
1 回答
5938 浏览

java - Jackson ObjectMapper 将“长”Java 类型视为“数字”而不是“整数”

使用org.codehaus.jackson.map.ObjectMapper(不是数据绑定版本!)我正在从以下对象生成一个 json 模式:

使用以下代码:

我得到以下架构(精简到相关部分):

“数字”不是 long 的最佳表示,因为当我在其他地方尝试从模式生成 pojos 时,我得到的是“double”而不是“long”(甚至“int”也可以)。

据此,json中有一个“整数”数据类型可以更好地满足我的需求:http: //spacetelescope.github.io/understanding-json-schema/reference/numeric.html

但是通过挖掘 jackson-mapper 模块的源代码,我发现他们使用的是LongSerializer包含在此类中的标准序列化程序:org.codehaus.jackson.map.ser.StdSerializers

相关部分是这个方法:

长话短说:是否可以覆盖标准序列化程序,或者我是否需要进入并破解我生成的输出?

0 投票
2 回答
1502 浏览

spring-mvc - 杰克逊自定义反序列化模块到抽象类

我有一大堆类(比如超过 100 个),它们都是从某个抽象类扩展而来的,我们称之为ParentClass. 让我们调用子类ChildAChildB等等。如何为所有孩子注册自定义反序列化器并在我的反序列化器中获取类类型?我试过了:

module.addDeserializer(ParentClass.class, new MyObjectDeserializer());

但它不起作用。

我想跳过做(什么工作):

应该知道类类型,因为我将 Jackson 用于 spring @RequestBody 方法,在那里定义了类名。任何想法如何做到这一点?

0 投票
2 回答
10157 浏览

timestamp - Jackson Java 8 DateTime 序列化

Jackson 运行 java.time.Instant 时默认启用WRITE_DATE_TIMESTAMPS_AS_NANOSECONDSREAD_以及)。 杰克逊-数据类型-jsr310

它产生这样的JSON

{ "createDate":1421261297.356000000, "modifyDate":1421261297.356000000 }

在 JavaScript 中,从传统的毫秒时间戳(而不是上面的秒/纳米)获取日期要容易得多,比如new Date(1421261297356).

我认为应该有一些理由默认使用 nanos 方法,那是什么原因呢?