问题标签 [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.
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。但它不起作用。请让我知道这是否可能。提前致谢。
java - JsonMappingException 处理和反序列化我们可以做的一切
遇到合作伙伴 API 还不能正常工作的情况。我收到的对象是这样的
所需的解决方案是记录 JsonMappingException 并将其保存在数据库中,而不是使对象崩溃,但结果是放置空值而不是无法反序列化的对象。
我试图添加 DeserializationProblemHandler- 没有触发任何方法并且 DeserializationFeature - 似乎没有我需要的功能。
我怎样才能专门化 Jackson 的行为,以便我可以将此行为应用于任何对象,所以如果无法映射任何字段,我可以处理这个并替换为 null 或任何默认对象?
java - Jackson:在反序列化时设置不是来自 JSON 的类/对象属性
我有以下 POJO:
这是我的 JSON:
我id
从代码中的其他地方获取值。
我想以id
某种方式将我的外部值与 JSON 结合起来,因此杰克逊可以构建一个POJO
包含这两个值的实例。
这是一些示例代码:
我怎样才能告诉杰克逊设置id
值?
我已经知道我可以使用om.readTree(json)
然后将其转换为ObjectNode
然后put("id", id)
然后创建一个om.readerFor(POJO.class)
并调用readValue(objectNode)
. 但我猜杰克逊现在会做两次它的工作。
有没有其他方法可以简单地注入一些外部属性?
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。
可能吗?
java - 使用 Jackson 更改嵌套 JSON 对象中的数组
我试图弄清楚如何通过指定该数组的路径来更改 JSON 数组中的现有对象。
问题是我不知道如何指定数组的路径以便可以更改它。我尝试过的每种方法都没有示例说明如何更改 ObjectNode 中的数组。
这是我现在的代码,在其中我尝试通过指针表示法指定数组的路径来获取和更改数组,但是,这总是不返回数组:
构建 POJO 类不是一种选择。
我的 json 结构中的数组如下:
代码:
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 类)
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?
java - 对于 Jackson,如何安全地共享 ObjectMapper ?是否有任何不可变的 ObjectMapper?
Mapper 实例是完全线程安全的,不需要创建一个单独使用的映射器,但是可以更改映射器的配置。
尽管 ObjectMapper 具有复制功能,可以根据现有映射器复制配置以进行自定义,但如果我共享一个映射器,则不能保证当有人想要自定义映射器时,他们会复制共享的映射器。所以我想要一个不可变的映射器来共享,如果有人不小心更改了共享映射器,应该抛出一些异常。
有这样的吗?
java - com.fasterxml.jackson.databind.exc.MismatchedInputException:无法反序列化对象实例出 START_ARRAY 令牌
获取 MismatchedInputException。在这里搜索了很多问题,但主要是发现 JSONMappingException 。我不明白它们是相同的还是不同的。
以下是实体:
所有的 getter 和 setter 就位。
以下是控制器映射函数:
以下是服务:
以下是存储库:
以下是我使用的依赖项:
我正在通过 Postman 进行测试,我还没有创建前端。以下是我发送的 JSON:
最后是控制台日志:
我不确定是什么导致了这个异常。当我启动应用程序时,正在数据库中正确创建表,并且我也在 GET 请求中正确获取数据。
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
但仍然面临同样的问题。
堆栈跟踪