问题标签 [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.
java - 如何防止使用 eclipse Yasson 输出空字符串和空集合
我们想为一些 Java 对象创建一个 json 字符串,但我们不希望将空字符串或空数组添加到 json 输出中。我们正在使用 Eclipse Yasson 1.0.1 创建 json 字符串。
实际上我们想要的是JsonInclude.Include.NON_EMPTY
杰克逊的行为,但我们不能使用杰克逊。
当前输出为
但我们希望它成为
java - 使用 Yasson 和 Johnzon 构建 JSON 对象的差异
我有以下使用 JSON 处理 API 的代码(描述符是我要序列化的接口)。
这适用于 Yasson,但如果我尝试用 Johnzon 序列化同一个对象,我会得到:
两种实现之间显然存在差异(我猜不应该存在),但是编写对象的正确方法是什么(理想情况下它适用于两者)?
我期待的输出是:
jersey - 是否可以全局设置 JSON-B (Yasson) 中的默认日期格式,而不是在每个属性上添加注释?
到目前为止,我一直在使用 Jersey,并且正在使用 JSON-B 进行我的第一个实现。
我正在使用 Payara,所以我与 Jersey 和 Yasson 合作。我遇到了一个问题,因为序列化的日期总是包含“[UTC]”后缀。
我设法在我的 DTO 中对我的日期属性使用了注释。但我想全局配置(在 JAX-RS 应用程序配置中?),而不是在每个日期属性上重复自己。那可能吗?到目前为止我还没有找到任何东西...
附带问题:我认为可以去掉这个“[UTC]”后缀,因为它会破坏所有试图解析日期的客户端。任何想法?
java - JSON绑定@JsonbTypeDeserializer注释在枚举上被忽略了吗?
我正在将 JAXB 应用程序转换为JSON-B,并且在尝试使用我的一个测试中的自定义反序列化 Java 枚举时遇到了问题JsonbDeserializer
。
我需要反序列化的原始 JSON 包含int
引用枚举常量的 s。因此,我的自定义JsonbDeserializer
需要采用int
并返回匹配的枚举常量ordinal
。它看起来像这样:
然后我像这样运行它:
不幸的是,这是我回来的:
如您所见,RegionDeserializer
未使用。相反,使用默认的枚举反序列化器。查看 JSON-B 文档,我看到我应该手动注册反序列化器:
当我这样做时,代码实际上是有效的。但这是我的问题 - 我该怎么做才能JsonbTypeDeserializer
自动注册注释?考虑到我有很多需要自定义反序列化器的枚举,手动注册它们确实无法扩展。
编辑 1:我尝试改用@JsonbCreator
-annotated 静态方法,结果是一样的。仍然使用默认的枚举反序列化器。
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:42Z和2020-03-19T06:42:42是同一件事?(我不认为他们是)。或者,当没有指定时区时,JSON-B 实现是否总是将 UTC 视为默认值?
谢谢
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 请求时使用此解析器。
java - Yasson 没有正确转换子类
我正在为 payara-micro 构建一个应用程序。我需要将 Json 字符串转换为扩展超类的对象。我遇到的问题是父字段和子字段都没有填充,并且创建的实例不是子类类型:
例如Person
有一个列表Vehicle
(子类型:,,,Bike
... Bus
)
此 json 的结果对象将是一个已填充的Person
对象,以及一个包含一个元素的列表,但该元素的类型将是,并且其中的任何字段都不会有值。name
Vehicle
Vehicle
Vehicle
java - Quarkus JsonB 更改为不同的时区
quarkus jsonb 正在反序列化 UTC 格式的 json。如何配置不同的时区?
UTC 输出:
maven依赖:
java - 使用 JSON-B / Yasson 将 JSON 反序列化为多态 POJO
我在资源类中有一个 PATCH 端点,其中一个抽象类作为请求主体。我收到以下错误:
似乎因为我声明为参数的身体模型是抽象的,所以它无法反序列化。
我期待得到 Element_A 或 Element_B
我怎样才能声明身体是多态的?
这是元素层次结构
这是我的端点的资源类
这是我在 PATCH 请求中发送的请求正文
我还尝试使用不起作用的自定义反序列化器添加 @JsonbTypeDeserializer
这是我发送的新请求:
引发此错误:
我的 pom.xml 包括:
jsonb-api - 是否有等效于 JsonFormat.Feature.ACCEPT_SINGLE_VALUE_AS_ARRAY 的 Yasson/Json-b
我正在将一个库从 Jackson 转换为 json-b,但我找不到 JsonFormat.Feature.ACCEPT_SINGLE_VALUE_AS_ARRAY 的等效项。这样的事情存在吗?
我得到了以下工作,但我讨厌使用 Yasson 内部来这样做。