问题标签 [jackson-databind]

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 投票
4 回答
899 浏览

java - 无法反序列化缺少多态字段的 JSON

我有如下课程

ATypeSpecific 类扩展了 TypeSpecific。

我想反序列化 JSON {"type":"b"} ,其中 typeSpecific 将在对象中设置为 null。但我得到以下异常:

com.fasterxml.jackson.databind.JsonMappingException: Missing property 'typeSpecific' for external type id 'type'

如何将上述 JSON 反序列化为对象?

依赖版本:

杰克逊注释:2.7.0,杰克逊核心:2.7.4,杰克逊数据绑定:2.7.4

我尝试过最新的补丁,即 2.7.9 和最新版本 2.8.6。但它不起作用。请让我知道这是否可能。提前致谢。

0 投票
1 回答
1086 浏览

java - JsonMappingException 处理和反序列化我们可以做的一切

遇到合作伙伴 API 还不能正常工作的情况。我收到的对象是这样的

所需的解决方案是记录 JsonMappingException 并将其保存在数据库中,而不是使对象崩溃,但结果是放置值而不是无法反序列化的对象。

我试图添加 DeserializationProblemHandler- 没有触发任何方法并且 DeserializationFeature - 似乎没有我需要的功能。

我怎样才能专门化 Jackson 的行为,以便我可以将此行为应用于任何对象,所以如果无法映射任何字段,我可以处理这个并替换为 null 或任何默认对象?

0 投票
1 回答
398 浏览

java - Jackson:在反序列化时设置不是来自 JSON 的类/对象属性

我有以下 POJO:

这是我的 JSON:

id从代码中的其他地方获取值。

我想以id某种方式将我的外部值与 JSON 结合起来,因此杰克逊可以构建一个POJO包含这两个值的实例。

这是一些示例代码:

我怎样才能告诉杰克逊设置id值?


我已经知道我可以使用om.readTree(json)然后将其转换为ObjectNode然后put("id", id)然后创建一个om.readerFor(POJO.class)并调用readValue(objectNode). 但我猜杰克逊现在会做两次它的工作。

有没有其他方法可以简单地注入一些外部属性?

0 投票
1 回答
646 浏览

java - 使用杰克逊序列化/反序列化具有不同属性的子属性

我必须 POJO 类(A 和 B)

要将对象 A 序列化为 json 我想要 b_name 而反序列化对象 AI 想要 b_id;

简而言之,我想将子字段的 b_name 与父对象一起传递。在反序列化时,我会得到 b_id,所以它应该绑定到 B 对象(b_id)。所以同一个子对象在序列化和反序列化时应该使用不同的属性。

from server= {a_id=1, a_name="abc", b="pqr"}
from client ={a_id=1,a_name="abc",b=1}
b 是序列化时的 b_name 和反序列化时的 b_id。

可能吗?

0 投票
2 回答
2970 浏览

java - 使用 Jackson 更改嵌套 JSON 对象中的数组

我试图弄清楚如何通过指定该数组的路径来更改 JSON 数组中的现有对象。

问题是我不知道如何指定数组的路径以便可以更改它。我尝试过的每种方法都没有示例说明如何更改 ObjectNode 中的数组。

这是我现在的代码,在其中我尝试通过指针表示法指定数组的路径来获取和更改数组,但是,这总是不返回数组:

构建 POJO 类不是一种选择。

我的 json 结构中的数组如下:

代码:

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

jackson - com.fasterxml.jackson.databind.JsonMappingException: Can not deserialize instance of java.lang.String out of START_OBJECT token

when deserializing below JSON, it fails with above exception message when trying to parse the server attribute which has its type 'string' nested within it, how to parse a JSON which is having the attribute types nested within each attribute like below?

0 投票
1 回答
2169 浏览

java - 对于 Jackson,如何安全地共享 ObjectMapper ?是否有任何不可变的 ObjectMapper?

Mapper 实例是完全线程安全的,不需要创建一个单独使用的映射器,但是可以更改映射器的配置。

尽管 ObjectMapper 具有复制功能,可以根据现有映射器复制配置以进行自定义,但如果我共享一个映射器,则不能保证当有人想要自定义映射器时,他们会复制共享的映射器。所以我想要一个不可变的映射器来共享,如果有人不小心更改了共享映射器,应该抛出一些异常。

有这样的吗?

0 投票
1 回答
103558 浏览

java - com.fasterxml.jackson.databind.exc.MismatchedInputException:无法反序列化对象实例出 START_ARRAY 令牌

获取 MismatchedInputException。在这里搜索了很多问题,但主要是发现 JSONMappingException 。我不明白它们是相同的还是不同的。

以下是实体:

所有的 getter 和 setter 就位。

以下是控制器映射函数:

以下是服务:

以下是存储库:

以下是我使用的依赖项:

我正在通过 Postman 进行测试,我还没有创建前端。以下是我发送的 JSON:

最后是控制台日志:

我不确定是什么导致了这个异常。当我启动应用程序时,正在数据库中正确创建表,并且我也在 GET 请求中正确获取数据。

0 投票
1 回答
2593 浏览

spring - 由于 Jackson 数据绑定,Spring mvc bean 创建错误

我在开发此代码时正在开发 Spring MVC Web 项目,但遇到以下错误:在花了很多天之后,我仍然无法解决此错误。

我正在使用以下版本的 Spring 和 Jackson Spring-MVC:4.5.3 Jackson-Databind:2.6.3 JDK:1.8+ Tomcat:9

下面是我的 pom.xml 和 spring 上下文文件

pom.xml 文件

弹簧上下文文件:

我已经尝试过使用不同版本的 Jackson,如 2.7.0、2.8.1 和 2.8.7。

我也将 spring 版本更改为最新的 4.3.8

但仍然面临同样的问题。

堆栈跟踪