问题标签 [yasson]

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

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

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

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

当前输出为

但我们希望它成为

0 投票
1 回答
154 浏览

java - 使用 Yasson 和 Johnzon 构建 JSON 对象的差异

我有以下使用 JSON 处理 API 的代码(描述符是我要序列化的接口)。

这适用于 Yasson,但如果我尝试用 Johnzon 序列化同一个对象,我会得到:

两种实现之间显然存在差异(我猜不应该存在),但是编写对象的正确方法是什么(理想情况下它适用于两者)?

我期待的输出是:

0 投票
1 回答
877 浏览

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

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

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

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

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

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

json - 日期序列化忽略 REST 请求中的 ContextResolver

我有一个基于 Wildfly 15 的应用程序,它使用 Yasson 序列化 REST 请求中的实体。我使用 javaee-api 8.0.1 并创建了一个ContextResolver用于配置日期序列化格式的文件,如https://stackoverflow.com/a/56300246/584532

但是,当使用以下代码发送 REST 请求时,会忽略配置(不会JsonbDateConfig触发方法中的调试断点)。

因此,生成的 JSON 包含格式不正确的日期值。

我可以创建一个JsonbAdapter并将注释添加@JsonbTypeAdapter(DateAdapter.class)到 type 的字段java.util.Date。但是,我更喜欢适用于所有日期字段的解决方案。不工作的解决方案是什么ContextResolver

请注意,WildflyContextResolver在启动期间加载我的实现类(类加载断点),当我收到传入的 REST 请求时使用此解析器。

0 投票
1 回答
115 浏览

java - Yasson 没有正确转换子类

我正在为 payara-micro 构建一个应用程序。我需要将 Json 字符串转换为扩展超类的对象。我遇到的问题是父字段和子字段都没有填充,并且创建的实例不是子类类型:

例如Person有一个列表Vehicle(子类型:,,,Bike... Bus

此 json 的结果对象将是一个已填充的Person对象,以及一个包含一个元素的列表,但该元素的类型将是,并且其中的任何字段都不会有值。nameVehicleVehicleVehicle

0 投票
3 回答
1208 浏览

java - Quarkus JsonB 更改为不同的时区

quarkus jsonb 正在反序列化 UTC 格式的 json。如何配置不同的时区?

UTC 输出:

maven依赖:

0 投票
1 回答
999 浏览

java - 使用 JSON-B / Yasson 将 JSON 反序列化为多态 POJO

我在资源类中有一个 PATCH 端点,其中一个抽象类作为请求主体。我收到以下错误:

似乎因为我声明为参数的身体模型是抽象的,所以它无法反序列化。

我期待得到 Element_A 或 Element_B

我怎样才能声明身体是多态的?

这是元素层次结构

这是我的端点的资源类

这是我在 PATCH 请求中发送的请求正文

我还尝试使用不起作用的自定义反序列化器添加 @JsonbTypeDeserializer

这是我发送的新请求:

引发此错误:

我的 pom.xml 包括:

0 投票
0 回答
50 浏览

jsonb-api - 是否有等效于 JsonFormat.Feature.ACCEPT_SINGLE_VALUE_AS_ARRAY 的 Yasson/Json-b

我正在将一个库从 Jackson 转换为 json-b,但我找不到 JsonFormat.Feature.ACCEPT_SINGLE_VALUE_AS_ARRAY 的等效项。这样的事情存在吗?

我得到了以下工作,但我讨厌使用 Yasson 内部来这样做。