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

json - Jackson 使用原始 json 将属性值反序列化为对象

我已经定义了 JSON Pojo 类,如下所示,在下面的 MyMessage 类中,有时我将 kpMessage 类作为字符串接收,如何将接收到的字符串转换为对象。

KpMessage.java

下面的示例输入按预期工作。

但是以下输入失败并出现错误no String-argument constructor/factory method to deserialize from String value

如何为上述输入添加反序列化器,以便如果收到 String 由于转义字符",则将 String 转换为KpMessageObject

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

java - 将 json 数组反序列化为 java 对象保存列表

好的,所以我一直在搞砸这个。我得到一个 json 数组,其中包含如下所示的对象:[{ "id": "1", "name": "some name", "url": "some url", "active": true }, { "id": "2", "name": "some other name", "url": "some other url", "active": true } ]"

现在,我希望能够将该数组反序列化为一个 java 对象,该对象包含数组中的对象列表。我制作了一个自定义反序列化器,如下所示:

保存列表的类如下所示:

现在,我知道这可能是一种愚蠢的方法,但长话短说,这是刚需。我显然做错了什么,因为我收到了这个错误:

无法将 com.wirelesscar.trailser.v1_0.domain.ProviderList 的实例从 [Source: [{"id":"1","name":"Posttrack","url":"http:\ dev.posttrack.com","active":true},{"id":"2","name":"Trackunit","url":"http:\dev.trackunit.com","active":真的}]; 行:1,列:1]

所以我的问题。这可能吗?我在哪里错了。

先谢谢了!

0 投票
2 回答
714 浏览

java - Vertx 3 - Java 序列化大对象

Vertx 3 新手。我正在使用 Java API。该用例用于通常处理大型对象 (POJO) 的报告应用程序。这些 POJO 包含要导出为 PDF、CSV 等的数据,这些通常是地图列表。我想知道是否必须通过 EventBus 将数据异步传递到不同的 Verticle,这将产生序列化/反序列化的成本。在处理大型对象时是否有任何提示/技巧,以便我们不会为序列化/反序列化带来巨大的开销?

0 投票
0 回答
73 浏览

java - 使用 Jackson (JAX-RS) 将 JSON 属性映射到方法参数

我在 JAX-RS 项目中使用 Jackson 2,并且我有一个方法期望 JSON 具有这种结构:

我能够使用自定义包装类将其映射到对象:

是否可以避免使用自定义类,并让 Jackson 将actorandmovie属性直接映射到参数?

然后我会使用这样的方法:

0 投票
2 回答
2705 浏览

java - 使用 Spring Boot、Jackson 和 Hibernate 的多对多关系

我正在使用 Spring Boot 和 Hibernate 开发一个休息项目,目前正在尝试弄清楚如何处理我的 json 序列化。

在此处输入图像描述

上面 ERD 中显示的模式由 Hibernate 映射并且工作正常。

当我向控制器发出获取请求时,就会出现问题。我的理解是 Spring 现在尝试使用 Jackson 序列化对象链。因为父对象和子对象都有一个属性,所以我们发现自己遇到了一个无限递归循环。

现在我研究了@JsonIgnore、@JsonView、@JsonManagedReference 和@JsonBackReference,但这些似乎只适用于一对多关系。

我正在寻找的是一种情况,例如,当我向 GET 请求时/users/{id},我得到了用户对象,包括它的所有关系属性(我们称之为完整对象),但关系属性本身并没有显示它们的关系-属性(最小化对象)。这适用于上面提到的注释,但是我如何使这个工作也以另一种方式工作呢?

期望的响应:/users/{id}

期望的响应/userrole/{id}

一般来说:当直接向实体发出请求时,我想要一个完整的对象,而当间接请求时,我想要一个最小化的对象。

有任何想法吗?我希望我的解释足够清楚。


更新

评论部分中要求的区域、用户和用户角色 POJO。

用户

用户角色

区域

0 投票
0 回答
56 浏览

spring - Spring 不使用 RESTful Web 服务,而是正确反序列化相应的字符串,为什么?

我正在尝试使用RESTful Web Servicewith Spring,我的参考代码是本指南中的参考代码。我正在询问的服务返回JSON如下:

我创建了以下对象(为简洁起见,省略了它们的所有方法):

使用以下代码,我可以成功反序列化一个Message对象:

正如我在日志中看到的:

如果我尝试RESTful Web Service使用以下代码直接连接到:

我观察到以下错误:

我在网上和这个网站上搜索以找到解决方案,但我想不出任何能带来有意义结果的关键字......有什么帮助吗?

为什么我会收到此错误? 如何解决?

谢谢!

PS:我只是尝试实现一个dumb service连接到该remote service服务并将该服务接收的JSON作为字符串返回的a,并且我修改了decode service已经能够反序列化JSON以从该dumb service而不是从该中获取数据remote service并且它可以工作!我大吃一惊!这没有意义!无论如何,作为参考,代码如下(请告诉我是否可以避免使用dumb service):

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 投票
2 回答
270 浏览

java - 杰克逊按类型序列化并混合?

我有一个像这样的 json 文件,需要由 Jackson 将其转换为 Java 用户实例。

我在我的班级“用户”中有这个:

我如何告诉杰克逊生成 json-data-property 的数据实例,如果 json-type-property 的值被称为“对象”并生成一个 List-Instance,如果 json-type-property 的值被调用“列表”。