问题标签 [jackson2]

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 回答
71 浏览

java - 在这种情况下如何使用 Jackson 包?

嗨,我有一个如下的 Json:

现在我的要求是将 A、B、C 转换为 camelCase 表示法(根据需要),这是我通过使用 @JsonProperty 以及相应 POJO 类的 getter 和 setter 方法完成的。

最后,我的输出如下:

现在我想在 b 和 c 之间添加一个新的空对象,比如 d。

你能帮我追加一个新的空 JSON 对象吗?

所需的输出应该是这样的:

杰森:

我需要这样的东西:

我已经完成了 camelCase 的转换,但我需要插入新对象“mainSkills”。

0 投票
2 回答
2839 浏览

spring-boot - 反序列化前的 Spring Boot 验证策略

我正在使用 Spring Boot 来运行 API。我想在反序列化之前验证用户请求参数,以防止杰克逊抛出反序列化异常。我的想法是最好在没有异常处理的情况下进行验证,但是如果您认为我错了,请告诉我。

现在我制作了一个带有@ControllerAdvice注释的异常处理程序控制器,以在异常冒泡给用户之前捕获它们,但是有没有办法在杰克逊反序列化之前验证用户输入以检查错误?

我开始使用弹簧验证,但如果我编写自定义验证器并注释请求参数,@Validate验证是否在反序列化之前进行?春季验证是要走的路吗?

我研究了使用注释进行验证(JSR 380),但我认为我需要对验证进行更多控制,这就是我编写自己的自定义验证器的原因。

我在想我可以编写一个自定义反序列化器来调用我的自定义验证器,但这是最好的方法。我正在寻找最佳实践和良好的验证策略。

在此先感谢您的帮助。

0 投票
1 回答
5256 浏览

java - JsonMappingException:没有单字符串构造函数/工厂方法

[这不是不能从 JSON 字符串中实例化类型值的副本;没有单字符串构造函数/工厂方法:这是一个更简单的 POJO 和 JSON。我的解决方案也不同。]

我要解析并创建 POJO 的 JSON:

如果响应恰好是错误,它看起来像:

这是我定义的 POJO:

注释@Data(告诉Lombok自动为类生成 getter、settertoString()hashCode()方法)和@Accessors(告诉 Lombok 以可以链接的方式生成 setter)来自Project Lombok

似乎是一个简单的设置,但每次我运行时:

我收到错误消息:

为什么我需要一个单字符串构造函数SmsResponse,如果需要,我在其中接受哪个字符串?

0 投票
4 回答
51699 浏览

spring - 如何在 Spring Boot Jackson 日期序列化中应用默认时区

我已将 Spring Boot 应用程序配置为将日期序列化为 ISO8601 字符串:

这就是我得到的:

但是我的时区是欧洲/马德里。事实上,如果我打印TimeZone.getDefault()这就是我得到的。

如何让杰克逊使用实际时区序列化这些日期时间值?格林威治标准时间+2

0 投票
1 回答
2557 浏览

java - 如何将 ToXmlGenerator.Feature 添加到 Jackson2ObjectMapperBuilderCustomizer?

我有jackson下面的bean配置。如何将ToXmlGenerator.Feature.WRITE_XML_DECLARATION功能添加到构建器?

以下不起作用:

结果:

构造函数抛出异常;嵌套异常是 org.springframework.beans.factory.BeanCreationException:在类路径资源 [org/springframework/boot/autoconfigure/web/JacksonHttpMessageConvertersConfiguration$MappingJackson2XmlHttpMessageConverterConfiguration.class] 中定义名称为“mappingJackson2XmlHttpMessageConverter”的 bean 创建错误:通过工厂方法进行 Bean 实例化失败; 嵌套异常是 org.springframework.beans.BeanInstantiationException:无法实例化 [org.springframework.http.converter.xml.MappingJackson2XmlHttpMessageConverter]:工厂方法“mappingJackson2XmlHttpMessageConverter”抛出异常;嵌套异常是 org.springframework.beans.FatalBeanException: Unknown feature class: com.fasterxml.jackson.dataformat.xml.ser.ToXmlGenerator$Feature

我最初的目标是在反序列化期间添加以下行:

<?xml version="1.0" encoding="UTF-8"?>.

也许有一种不同的方式而不是使用ToXmlGenerator?

我也尝试了以下方法,但这也没有添加 xml 声明行:

0 投票
1 回答
12780 浏览

java - Spring boot + Jackson - 始终将日期转换为 UTC

我在没有时间戳的情况下将日期保存在我的数据库中,所以我想标准化 Spring Boot Rest 控制器接收日期的方式,以便可以将服务部署在世界任何地方(AWS EC2 等)。

我尝试设置以下属性,但没有帮助:

还有一个属性,always true,所以我没有设置,那就是:

我正在部署到 2 个单独的 Ubuntu 容器,一个在UTC时区,另一个在我当前的时区America/Sao_Paulo(GMT -3)。

有效载荷示例:

当服务部署在圣保罗时,它会收到:

这是正确的。

当服务部署在 UTC 上时,它会收到:

这是不正确的。

我将日期信息存储在 Java 中LocalDateTime

示例模型:

示例资源:

我无法更改所有生产机器的时区,我必须使用 Jackson 和 Java(如果可能)解决这个问题。

另一个限制:不能注释我的模型类来做到这一点。

我的pom.xml(相关部分)

0 投票
1 回答
1764 浏览

java - 杰克逊反序列化实现接口的对象并忽略接口属性

我有一个带注释的类,它实现了一个带有一个名为通用的只读属性的接口,因此我可以在程序的其他部分中.id()提取不同类型的id 。

杰克逊应该忽略整个界面。但相反,我收到以下错误消息:

java.util.concurrent.ExecutionException: com.fasterxml.jackson.databind.exc.InvalidDefinitionException: 无法构造实例my.company.Identifiable(没有创建者,如默认构造,存在):抽象类型要么需要映射到具体类型,具有自定义反序列化器,要么在 [Source: UNKNOWN; 行:-1,列:-1](通过参考链java.util.HashSet[0]:)

在搜索该异常以及谷歌的整个前两页时,我已经尝试了这里找到的所有解决方案。他们都没有解决我遇到的确切问题,我无法从其中任何一个中插入针对我的具体问题的解决方案,CustomDeserializer除了我不想写的。

我尝试过使用JsonTypeInfo,但我以前从未使用过该注释,并且无法弄清楚我应该用它做什么。使用的解决方案与我的略有不同,他们实际上想要接口属性而不是忽略它。

在某些类中没有实际的id成员变量,它只是method返回一些被认为是id程序的另一部分的东西。ID<String>在某些情况下和ID<Integer>其他情况下。

我试过用 和 注释,@JsonProperty(access = Access.READ_ONLY)@JsonIgnore它们@JsonIgnoreProperties({"id"})都没有改变异常。我也试过所有的mode设置@JsonCreator,都没有。

接口定义为:

示例类定义为:

这是绑定代码的样子:

在这种情况下,在哪里并且V是一个.UserresultsArray

在我添加接口之前,这个类和其他几个类的反序列化工作正常Identifiable<T>,它们都因同样的异常而中断。

这不是一个abstract类,每个方法都实现了。我想我已经把@JsonIgnore适用的所有地方都放了。

我仍然得到那个异常,不知道如何解决它。

我有一种感觉,@JsonTypeInfo注释中有一些东西可以解决这个问题,但是示例和 javadoc 并不是为不知道何时或如何使用注释的人编写的。

我错过了什么?

0 投票
1 回答
1062 浏览

java - 如何使用 JsonIter 从 json 获取特定的键值,通过使用任何 getter 方法(如果可用)?

我正在使用http://jsoniter.com/ java lib 来解析 json ,似乎使用这个 lib ,它只能遍历 JSON 并且没有像我们在 org.json 中那样提供任何 api 来获取特定键的值像下面

jsonObject.get("some_key")

我们在http://jsoniter.com/中也有这种类型的 getter 方法,任何人都可以帮助我。

0 投票
1 回答
2608 浏览

java - 如何在杰克逊 2.9.x 中禁用 0/1 到真/假的转换

我有一个需要严格 json 策略的项目。

例子:

以下json应该可以工作:

以下应该失败(抛出异常):

相同的:

true基本上,如果有人提供与or不同的东西,我希望反序列化失败false。不幸的是,杰克逊将1其视为 true 和0as false。我找不到禁用这种奇怪行为的反序列化功能。

0 投票
0 回答
55 浏览

java - 如何避免杰克逊对象内的对象包装器

我对Jackson 和 Hibernate OGM 的春天很陌生。我从网络请求中得到如下 JSON 格式

订单的 Pojo 类

将文档插入 MongoDB 后。我得到如下

在这里,我需要避免在创建的每个文档中使用“Orderdata”名称。请帮我解决这个问题。