问题标签 [jsonb-api]

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

spring-boot - 无法完成请求:java.io.IOException: Stream closed from Spring boot Controller method

我使用 jsonb 作为 Spring Boot 的首选 json 映射器。但是当通过 Rest 客户端(Soap UI)调用控制器时,我得到了一个 Stream closed 异常。如果我使用 Jackson 作为首选的 json 映射器,一切都会顺利进行。我正在使用 Spring WebMVC。没有 JAX-RS。我们正在尝试使用 Java 平台的标准 Json API。返回的对象是一个简单的 POJO,使用 lombok 注释 (@Data) 进行注释。jsonb 实现的其他用途在其他非 spring-mvc 方法中起作用。

代码/配置部分:

1) pom.xml

2)应用程序.yaml:

3)控制器方法:

例外:

我尝试切换服务器:Jetty/Tomcat。我还尝试了不同的实现:Apache Johnzon vs Eclipse Yasson。

0 投票
1 回答
134 浏览

json - 我需要与 Yasson 绑定 JSON 的 getter 吗?

我试图避免我的 POJO 上的 getter 和 setter,但 Jersey 正在使用我的 getter 方法将我的 POJO 转换为 JSON。

我尝试使用 Yasson,但是当我尝试删除我的吸气剂时,它只返回空白 JSON。

0 投票
2 回答
2759 浏览

java - 使用 JSON-B 反序列化 JSON 数组

我正在尝试使用 JSONB 反序列化 JSON 数组。

JSON

控制器

动物清单

动物

但我收到以下错误:

0 投票
1 回答
262 浏览

java - 如何防止使用 eclipse Yasson 输出空字符串和空集合

我们想为一些 Java 对象创建一个 json 字符串,但我们不希望将空字符串或空数组添加到 json 输出中。我们正在使用 Eclipse Yasson 1.0.1 创建 json 字符串。

实际上我们想要的是JsonInclude.Include.NON_EMPTY杰克逊的行为,但我们不能使用杰克逊。

当前输出为

但我们希望它成为

0 投票
1 回答
877 浏览

jersey - 是否可以全局设置 JSON-B (Yasson) 中的默认日期格式,而不是在每个属性上添加注释?

到目前为止,我一直在使用 Jersey,并且正在使用 JSON-B 进行我的第一个实现。

我正在使用 Payara,所以我与 Jersey 和 Yasson 合作。我遇到了一个问题,因为序列化的日期总是包含“[UTC]”后缀。

我设法在我的 DTO 中对我的日期属性使用了注释。但我想全局配置(在 JAX-RS 应用程序配置中?),而不是在每个日期属性上重复自己。那可能吗?到目前为止我还没有找到任何东西...

附带问题:我认为可以去掉这个“[UTC]”后缀,因为它会破坏所有试图解析日期的客户端。任何想法?

0 投票
2 回答
173 浏览

jax-rs - 从 JsonbSerializer 访问 JAX-RS 资源注释

我有一个使用自定义 GSON JSON 适配器在 Payara 4 上运行的应用程序。我想迁移到 Payara 5 (5.191) 并开始使用 JSON-B。在我们当前的应用程序中,我们可以使用资源上的注释来控制 JSON 输出。

例如使用@Summarize

这将导致在我们的 : 中使用不同的 GSON 配置@Provider

我想在新的 JSON-B 设置中做类似的事情。我用 注释了我们的实体@JsonbTypeSerializer(MySerializer.class),所以我希望能够从序列化程序中检测它应该做什么:要么创建一个完整的序列化 JSON 对象,要么创建一个摘要。

我希望做的是在 中设置一个属性JsonbConfig,如下所示:

@Context并使用(只是猜测这可能在这里工作)在序列化程序中读取它,如下所示:

..但事实并非如此。有什么方法可以从一个访问 JAX-RS 资源注释JsonbSerializer

0 投票
1 回答
776 浏览

java - JSON绑定@JsonbTypeDeserializer注释在枚举上被忽略了吗?

我正在将 JAXB 应用程序转换为JSON-B,并且在尝试使用我的一个测试中的自定义反序列化 Java 枚举时遇到了问题JsonbDeserializer

我需要反序列化的原始 JSON 包含int引用枚举常量的 s。因此,我的自定义JsonbDeserializer需要采用int并返回匹配的枚举常量ordinal。它看起来像这样:

然后我像这样运行它:

不幸的是,这是我回来的:

如您所见,RegionDeserializer未使用。相反,使用默认的枚举反序列化器。查看 JSON-B 文档,我看到我应该手动注册反序列化器:

当我这样做时,代码实际上是有效的。但这是我的问题 - 我该怎么做才能JsonbTypeDeserializer自动注册注释?考虑到我有很多需要自定义反序列化器的枚举,手动注册它们确实无法扩展。

编辑 1:我尝试改用@JsonbCreator-annotated 静态方法,结果是一样的。仍然使用默认的枚举反序列化器。

0 投票
1 回答
920 浏览

java - Java Jsonb在ISO8601中反序列化UTC日期时间

我正在使用 JSON-B(yasson 实现)并且我正在接收具有这样一个字段的对象的数据

对于 UTC 日期时间值,这是完全标准的 ISO 8601。现在对应的 Java 类只声明了一个 Date 成员变量,没有其他特定的注解

一切似乎工作正常,看起来 JSON-B 实现正确理解为 UTC,而无需我使用@JsonbDateFormat注释指定格式。我想我很确定,因为我检查过

但是,当我运行另一个测试从日期时间值中删除“Z”时,它会产生正确的结果,我希望它会产生一个不同的结果,将日期时间值解释为本地而不是 UTC。令我大吃一惊的是,JSON-B 得到的 Date 对象是完全一样的。我在这里想念什么?为什么2020-03-19T06:42:42Z2020-03-19T06:42:42是同一件事?(我不认为他们是)。或者,当没有指定时区时,JSON-B 实现是否总是将 UTC 视为默认值?

谢谢

0 投票
1 回答
98 浏览

java - 我如何确定 Java 类型是否可从 JSON 转换为 JSON

JSON-B 将类型转换LocalDate为简单的字符串。当我有 aType时,如何确定 JSON-B 是否会直接转换这种类型,即它是否是标量类型?

我没有实例,所以我什至不能尝试将其转换为字符串并查看它是否包含花括号。

或者我是否必须寻找具有valueOforparse方法或构造函数的类型只有一个 String 参数?

0 投票
1 回答
620 浏览

java - (De) 在 Thorntails 上序列化 JSON 使用 JSON-B 而不是 Jackson

我有一个基于 Thorntail 和 Microprofile 的小型服务。看起来很简单——在 POST 请求中获取 JSON 做一些事情,返回响应。但是问题是,在 POJO 中,我有一个LocalDateTime字段并且出现了问题,这是我得到的响应

为什么它使用 Jackson 而不是 Jsonb provider ?

在日志中,我收到以下消息(除其他外)

我在哪里设置这个resteasy.preferJacksonOverJsonB属性?
我试图在 中设置属性project-defaults.yml,我试图作为-D参数提供,但似乎没有任何效果,我仍然收到此消息,并且(反)序列化仍然存在问题。

修复它的方法是什么?我查看了文档、示例甚至源代码,仍然想知道什么会起作用。

更新:

相关部分来自dependency:tree