问题标签 [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 回答
1401 浏览

json - 我们必须在 Scala 案例类中使用 @JsonProperty 吗?

每个人。

为案例类的 Json 序列化定义 @JsonProperty 注释似乎是一个非常不必要的练习。例如:

通过使用jackson-module-parameter-names模块和-parameters javac 选项,似乎可以在 Java 中避免像这样的琐碎 @JsonProperty 注释(只是重复参数的名称) :

为什么构造函数用@JsonCreator注解时,它的参数必须用@JsonProperty注解?

但是,这不适用于 Scala 案例类。有针对这个的解决方法吗?

0 投票
1 回答
686 浏览

spring - 库中的自定义 Jackson 序列化

我正在编写一个使用 RestController 来公开一个资源的 Spring Boot 应用程序。唯一的资源 MainResource 是这样的:

String id; String title; List<String> tags; ComplexGraphObject gObject;

为了完成这项工作,我在必要时为 MainResource 和 gObject 及其字段编写了 DTO。我用 Jackson 注释了 DTO,并编写了返回域模型的 DTO-Mappers。Spring 正确地将对 DTO 的请求序列化,并且应用程序服务为域对象调用 DTO-Mappers。

我现在意识到 gObject 应该是它自己的库,因为我们想将它用于客户端和服务器应用程序。

我的目标是:

  1. 该库应采用 json/xml 中的序列化 gObjects 并返回域对象。
  2. 该库应采用域 gObjects 并返回序列化的 json/xml
  3. 使已经使用 Jackson 的应用程序尽可能与 Spring Boot 等库无缝协作
  4. 为其他可能使用诸如 gson 之类的应用程序提供方便的方法

从我读到的自定义杰克逊 de/serializer 是要走的路。但是在自定义序列化程序、ObjectMapper、MixIns 等之间,我不知道该怎么做。

编辑:我认为 mixins 的目的有点像我的 DTO 正在做的事情,而 DTO-Mapper 有点像自定义 de/serializer 应该做的事情。有没有办法混合两者?

编辑:我忘记了重要的部分。DTO-Mapper 从 DTO 生成域对象以及表示图中每个节点所需关系的矩阵,以便可以相应地连接它们。所以我想我需要在自定义序列化程序中这样做?

0 投票
2 回答
1815 浏览

java-8 - 使用 LocalDateTime 的客户端 Resteasy

我尝试使用 Resteasy CLIENT 调用一项 REST 服务

在我的服务中,我使用 springboot 创建并返回一个 LocalDateTime 属性

如果我使用这种依赖

这是我的 bean 中的代码:

这是我调用我的服务时的结果:

dtPublicacao:“2017-04-20T00:00:00”

如果我删除这个结果:

所以在我的客户中,我创建了相同的模型并使用它来执行 Get

因此,如果我将 LocalDateTime 放入客户端,则会收到此错误:

引起:org.codehaus.jackson.map.JsonMappingException:无法从JSON字符串实例化类型[简单类型,类java.time.LocalDateTime]的值;没有单字符串构造函数/工厂方法(通过参考链:br.com.lumera.protesto.edital.vo.EditalVO["dtExpiracao"])

解决我需要在我的客户表单中更改 LocalDateTime 到 Date 并添加

我已经尝试在我的客户端中添加相同的依赖项,但是他注册了 LocalDateTimeSerializer.class 但是当我调用 REST 时,他没有通过 serialize 方法,我又得到了错误。

我可以从我的 Restasey 客户端接收和发送 LocalDateTime 吗?

tks

更新 我也已经尝试过这样做:

没有成功,然后我尝试在我的客户中:

没有成功..如果我调试我的应用程序,他会输入方法

在 LocalDateTimeSerializer 但不要进入序列化方法或反序列化

0 投票
2 回答
14400 浏览

jackson - 意外的令牌 (END_OBJECT),预期的 FIELD_NAME:缺少属性“@type”

我在反序列化期间遇到异常,来宾配置文件是 Root 对象中的嵌套对象(其中的几个级别)。我无法控制它的序列化方式,因为我只是来自 kafka 主题的这条消息的消费者。有没有办法使这项工作,除了设置

GuestProfile这对我有用,并在填充其他属性的情况下返回 null 。但是,我需要一种方法来自定义 JSON 中这个特定嵌套对象的反序列化并填充它。

com.fasterxml.jackson.databind.JsonMappingException:意外令牌(END_OBJECT),预期 FIELD_NAME:缺少包含类型 ID 的属性“@type”(对于 com.test.GuestProfile 类)

0 投票
1 回答
3211 浏览

java - Spring 和 MappingJackson2HttpMessageConverter 和 registerModule

我们正在使用最新的 Spring 4.2.x,我们最近从 Jackson Mapper 2.6.3 升级到 2.8.8,现在我们正在注册模块。

这是 spring-servlet.xml 的一部分:

这是我们在代码中映射 json 文件的内容:

所以,我想做的是配置“spring-servlet”和“MappingJackson2HttpMessageConverter”,这样我就可以添加要注册的模块。

是的,我们还没有开始使用@Configuration,我们仍然在使用我完全不介意的 XML。

谢谢你的帮助!

0 投票
0 回答
468 浏览

java-8 - Springboot 与 Localdatetime 和 resteasy 客户端

我使用 springboot 返回一个 LocalDateTime 和 LocalDate 参数,所以我在后面放了:

并在应用程序属性中:

所以现在我的背部返回这两种类型:

在我面前我使用:

在我的课堂上:

因此,当我回电时,我得到了错误:

javax.ws.rs.client.ResponseProcessingException:javax.ws.rs.ProcessingException:org.codehaus.jackson.map.JsonMappingException:无法从JSON字符串实例化类型[简单类型,类java.time.LocalDateTime]的值;没有单字符串构造函数/工厂方法(通过引用链:br.com.exmart.indicadorRTDPJ.service.rest.vo.ProtocoloVO["entrada"])

我已经尝试放入我的

但得到了同样的错误

我已经试着把

0 投票
1 回答
1070 浏览

spring - 如何在 Spring Boot 中为 jackson-datatype-money 创建 Jackson Customizer?

我对 Jackson 的这个 Spring Boot 定制器有疑问。调试它似乎已配置,但杰克逊在(反)序列化期间没有使用该模型。

这是解决这个问题的正确方法吗?

0 投票
1 回答
435 浏览

java - Spring MVC,MessageConverters,忽略代码配置

我正在使用 xml 和基于代码的配置的混合。我的代码配置的一部分被忽略了。这个:

我在 Spring MVC 应用程序启动时调试该configureMessageConverters()方法,并执行该方法。尽管如此,我在控制器中的 JSON 响应并没有将 Joda LocalDate 转换为字符串表示,而是返回整个对象结构。

为什么会被忽略?

0 投票
2 回答
2994 浏览

json - Jackson 映射器扩展 LocalDate

我们有一个使用 LocalDate 定义的 DTO:

我们有一个 ObjectMapper 定义如下的代码:

我们的 pom.xml 文件中包含所有 jackson-datababindm 核心 jsr310:

因此,当我将对象转换为 JSON 字符串时:

dob 将 JSON 字符串写入为:

"dob":{ "year": 1964, "month": "FEBRUARY", "chronology": { "calendarType": "iso8601", "id": "ISO" }, "monthValue": 2, "dayOfMonth" :13,“dayOfWeek”:“THURSDAY”,“era”:“CE”,“dayOfYear”:44,“leapYear”:true}

而不是: "dob":"1964-02-13" 这是正确的。

所以,我不确定我是如何做到这一点的?
我想确保写出的日期是正确的,所以我可以重新解析回 LocalDate。或者,有没有办法可以获取现有的 JSON(扩展)并将其解析回 LocalDate?

谢谢!

0 投票
1 回答
14 浏览

spring - 已导入 Git 存储库但未找到某些导入?

我有一个导入 Eclipse 的 Git 存储库,但它有一些导入错误。

我正在使用 Spring Redis 1.8.4 版并按照他们的示例介绍如何进行对象映射。我使用了 Jackson Mapper 链接,然后使用了 jackson-datatype-mongo 映射器。

https://github.com/commercehub-oss/jackson-datatype-mongo

在我的工作电脑上一切都很好。

在此处输入图像描述

如果我删除了 jackson-datatype-mongo 依赖项,那么导入就可以了,但是我不会有 MongoModule 导入。我尝试了 eclipse 的一个解决方案,它说它可以归档“jackson-databind-2.8.1.jar”,一切都会很清楚。但后来我的“.classpath”文件现在被更改了。

我不明白它在一台机器上有多好,我所做的只是将存储库克隆到另一台机器上。