问题标签 [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 投票
3 回答
39971 浏览

java - 如何将@JsonIdentityInfo 与循环引用一起使用?

我正在尝试使用 Jackson 2 中的@JsonIdentityInfo,如此处所述

出于测试目的,我创建了以下两个类:

当然,天真的方法失败了:

添加@JsonIdentityInfo(generator=ObjectIdGenerators.IntSequenceGenerator.class, property="@id")到 A 类和/或 B 类也不起作用。

我希望我可以序列化(然后反序列化)a这样的东西:(虽然不太确定 JSON)

我怎样才能做到这一点?

0 投票
1 回答
5261 浏览

java - 反序列化杰克逊中同名但不同类型的属性?

我有一个 REST API,它返回一个 JSON 响应:

有时它会返回:

我有一个 POJO,例如:

那么,有没有一种方法(除了编写您自己的自定义反序列化器)在Jackson2中可以帮助我channel在 JSON 中映射以String在它是 aStringChannel输入,在它是 JSON 对象时输入?

或者换句话说,杰克逊有没有一种方法可以映射type变量而不仅仅是name

0 投票
1 回答
1373 浏览

java - 多态反序列化杰克逊问题

爪哇:

JSON:

当我试图反序列化以上对 java 的 json 响应时,jackson 抛出以下错误。有人可以帮我解决这个问题。

0 投票
1 回答
1733 浏览

spring-boot - Spring Data REST - JsonGenerationException:无法写入数字,需要字段名称

我遇到了使用 Spring Boot 启动器的 Spring Data REST 应用程序的问题。我有许多用各种关系定义的实体。我可以通过键(通常)检索它们,但是我遇到了一些相同对象的集合的问题。我想知道这是否是 JsonIdentityInfo 问题或以其他方式“破坏”唯一标识符内容以防止循环 JSON 生成。

Company 表中有大约 500 个条目,页面大小默认为 20。转到默认端点 (/company),它返回以下错误。我可以毫无问题地提取各个公司 (/company/1),包括在创建 JSON 异常时尝试生成的同一家公司。

当我进入异常堆栈时,我看到它正在尝试为 supportEmailAddress 字段生成 JSON。这是可以被多个公司行引用的行。公司也有在此表中具有电子邮件地址的联系人,但这些通常不在公司或联系人之间共享。

注意:我用类似的堆栈跟踪查看了 SO 问题,但该问题似乎围绕自定义序列化程序展开。我没有使用自定义序列化程序。

我尝试过的几件事:

  • 带和不带范围属性的 JsonIdentityInfo
  • JsonManagedReference 和 JsonBackReference
  • @Id 字段上的 @Access(AccessType.PROPERTY)

库版本:

我已经尝试通过序列化进行调试,根本问题是序列化程序在处理 company.supportEmailAddress.key 时会感到困惑。它正在尝试输出键值,但序列化程序希望键名是下一个。当第二次引用相同的 supportEmailAddress id 时会发生错误。

更新到杰克逊 2.8.0。没变。

我在最后添加了一个简化的手写示例 JSON 来显示我所期望的结构。如您所见,这两个公司引用了相同的 supportEmailAddress 对象(相同的 id)。如果我更改为不同的 ID,它会正确呈现。我相信第二个引用实际上只会输出 id 而不是对象的其余部分,因为它已经序列化了一次。我的理解是这是一个标准功能,我没有做任何与更改杰克逊默认功能相关的事情。

简化实体(省略访问器):

公司:

所有者:

电子邮件地址:

接触:

堆栈跟踪:

示例 JSON:

0 投票
2 回答
990 浏览

java - Spring Redis JSON 序列化程序嵌入引用字段

我有一个具有许多简单属性的类(类型是int, String,...)。它还有一个属性,它是我的另一个类的实例。现在我想通过 Redis 发布/订阅通道发送对象。为此,我使用GenericJackson2JsonRedisSerializer. 由于两个类都有自己的存储库,我不想每次都嵌入对象,而是只发送 ID。我认为这应该可以通过org.springframework.data.annotation.Reference在字段中添加注释来实现。

不幸的是,这不起作用,它只是嵌入了对象。是不是我做错了什么?我需要做什么才能在序列化版本中获取对象的 ID?

谢谢您的帮助!

0 投票
0 回答
561 浏览

java - 反序列化时类似于 JsonFilter 的过滤器属性

我正在使用 Jackson 2,并在反序列化过程中对属性进行动态过滤。

我的想法是加载一个实体并阅读更改:

我试图使用@JsonView,它适用于简单的情况。

我得到了 EntityA 的更新,读者应该只接受 EntityB 的 id,它用于通过 EntityManager 查找外部实体。

Using@JsonView允许我处理它,但我需要为所有用例提供不同的视图类,仅更新 EntityB。

有什么方法可以在反序列化期间动态过滤属性,例如@JsonFilter
我找到了一个使用BeanDeserializerModifier的旧答案,但我希望有更好的方法。

0 投票
2 回答
34277 浏览

java - Jackson 中的 ObjectNode 和 JsonNode 有什么区别?

根据以下文档JsonNode

然而,大多数 mutator 需要通过特定的子类(例如ObjectNode 和 ArrayNode)来访问。

但是我仍然感到困惑,因为一些 stackoverflow 答案似乎可以互换使用它们。它们有什么不同的目的?

0 投票
0 回答
276 浏览

java - 使用 Jackson Mapper 将 JSON 数据映射到 Java POJO 类,希望在 listview 中获得结果

试图通过意图数据使用杰克逊解析并添加到 pojo 类并返回但无法发送和获取?

主要活动是..

这是我的 ActivityListView 类...

我的 PersonAdapeter 类看起来像这样

这是我的 PersonModel 类...

0 投票
1 回答
1739 浏览

java - 假设 Jackson 中根节点的所有子节点都是字段名称是否合理?

我正在尝试遍历 JsonNode 树,并且我编写了以下代码片段,它遍历根节点的子节点并从中获取文本,我假设这将是一个字段名称。

我已经阅读了这篇类似的帖子,但接受的答案根本不起作用,因为两者fieldsfieldNamesreturn ,据我所知iterator,它不能单独通过foreach循环进行迭代。

另一个最受好评的答案有效,但我想知道上述片段的假设是否仍然有效。

0 投票
1 回答
1382 浏览

java - 如何告诉杰克逊序列化为没有属性前缀的json

在我的 Java IDE 中,我告诉 java 我为我的字段使用前缀。

结果是,在 Java 到 Json 序列化期间,我的所有属性都以 为前缀_,有没有一种简单的方法可以做到这一点?

实际的

通缉