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

jax-rs - 强制 JSON-B 在生成 JSON 时将数字写为字符串

我在我的 Java 代码中处理大量数字,并且由于 JavaScript 的限制(即整数的 32 位支持),我需要将这些数字写为我的应用程序返回的 JSON 中的字符串。

是否有全局配置或注释可以让我这样做?如果可能,我想避免编写自定义序列化程序/适配器。

我正在使用带有新 JSON-B/Yasson 支持的 RestEasy。

0 投票
1 回答
875 浏览

java - Ignore enum case with JSON-B / Yasson

Using JSON-B / Yasson is there any way to ignore case of enums when deserializing?

part of incoming JSON: "condition" : "new" The problem is that the incoming JSON uses the enums in lowercase.

0 投票
1 回答
310 浏览

java - jsonb 1.0 / eclipse yasson 忽略没有 bean 访问器方法的私有属性

根据我假设是官方用户指南http://json-b.net/users-guide.html,引擎应该序列化它找到的任何属性,有或没有 bean 访问器方法(我意识到 Dog 示例使用 public字段,但请参阅私有字段的 Person 示例)。

鉴于这些类:

当我像这样序列化它时:

输出是这样的:

我看到的是,在 Rectangle 中,只有宽度被序列化,因为它是公共的。length1 和 length2 被忽略,因为它们是私有的,即使 length2 上有属性注释。Rectangle2 是完全序列化的,因为它有 bean 方法。

一定要这样吗?要求我将所有字段公开且可变以启用序列化似乎是一个巨大的限制。

我的依赖项是这样设置的:

0 投票
1 回答
677 浏览

json - 使用 JSON-B 1.0(例如 Yasson、Java EE 8)有效地将 JsonObject 转换为 pojo

一个 JsonObject 可以通过以下方式转换成它对应的类实例:

Pojo pojo = JsonbBuilder.create().fromJson(jsonObject.toString(), Pojo.class)

但是,使用 String 似乎是低效的,它jsonObject.toString()是包含相同信息的其他中间表示。我需要在对象绑定之前转换 jsonObject。那么有没有更有效的方法来实现从 JsonObject 的绑定?

(注意我想用 Java EE 8 标准来实现,所以 Gson 和 Jackson 不是一个选项,但可能是它的概念)。Yasson小组中目前没有答案,所以希望有人能找到这个。Michael Schnell 还提出了JsonStructure绑定,但目前还没有解决方案。

0 投票
1 回答
2068 浏览

java - 为什么在使用带有 JSON-B 的 Yasson 时需要来自 Glassfish 的 javax.json 作为依赖项?

为了使用Java API for JSON Binding (JSON-B),我发现有必要在我的Maven POM中包含以下三个依赖项:

前两个对我来说很有意义。

javax.json➥ 但是来自Glassfish的第三个依赖项到底给聚会带来了什么?为什么我的应用程序需要它才能运行?

如果省略,在运行时Jsonb jsonb = JsonbBuilder.create();,我会收到此错误:

javax.json.JsonException:未找到提供程序 org.glassfish.json.JsonProviderImpl

我很困惑,因为我认为 Yasson我的 JSON 处理实现。

0 投票
1 回答
859 浏览

json - localdate json 与 Wildfly 服务器中的 yasson 实现绑定

如果我在实体类中使用 LocalDate 类型,如果我发送 POST 请求,则会收到以下错误:

如果我将我的属性类型从

有用!

我已经使用 Wildfly 15 和 16(Eclipse Yasson 实现)进行了测试,新的 Java 日期类似乎不适用于 JSON-Bindings。

这是不支持还是我有什么问题?

0 投票
2 回答
153 浏览

jax-rs - 如何从 JSON 对象序列化中排除 Weld 元数据

假设以下 REST 资源:

getBo() JSON(但不是 XML)的 REST 响应返回以下内容:

JSON 响应包含一个额外的“元数据”字段——如何将项目配置为不生成它,或者避免生成它?CDI 容器是 Weld,而 JSON 序列化程序由 Yasson 提供。

0 投票
1 回答
83 浏览

primefaces - Primefaces 与 Wildfly 中的 Yasson 有什么关系吗?

我有 Wildfly 14.0.1,由于 Yasson 中的错误(错误)是 RESTEASY 在序列化/反序列化时采用的 JSONB 的默认实现,我必须将 Yasson 的版本从 1.0.1 升级到 1.0.4。

当我在 Wildfly 模块中更改版本时,这是我在日志中遇到的错误:

严重 [org.primefaces.application.exceptionhandler.PrimeExceptionHandler](默认任务 1)找不到基本名称消息的包,语言环境:java.util.MissingResourceException:找不到基本名称消息的包,语言环境在java.util.ResourceBundle.throwMissingResourceException(ResourceBundle.java:1573) at java.util.ResourceBundle.getBundleImpl(ResourceBundle.java:1396) at java.util.ResourceBundle.getBundle(ResourceBundle.java:1091) at com.sun.faces .util.MessageFactory.getMessage(MessageFactory.java:163) 在 com.sun.faces.util.MessageFactory.getMessage(MessageFactory.java:136) 在 com.sun.faces.util.MessageUtils.getExceptionMessage(MessageUtils.java:368 ) 在 com.sun.faces 的 com.sun.faces.application.ValidateComponentNesting.addOmittedMessage(ValidateComponentNesting.java:109)。application.ValidateComponentNesting.access$000(ValidateComponentNesting.java:36) at com.sun.faces.application.ValidateComponentNesting$ValidateFormNestingCallback.visit(ValidateComponentNesting.java:91) at com.sun.faces.component.visit.FullVisitContext.invokeVisitCallback(FullVisitContext .java:151) 在 javax.faces.component.UIComponent.visitTree(UIComponent.java:1736) 在 javax.faces.component.UIComponent.visitTree(UIComponent.java:1747) 在 javax.faces.component.UIComponent.visitTree( UIComponent.java:1747) 在 javax.faces.component.UIComponent.visitTree(UIComponent.java:1747) 在 javax.faces.component.UIComponent.visitTree(UIComponent.java:1747) 在 com.sun.faces.application.ValidateComponentNesting .processEvent(ValidateComponentNesting.java:53) 在 javax.faces.event.SystemEvent。processListener(SystemEvent.java:147) at javax.faces.event.ComponentSystemEvent.processListener(ComponentSystemEvent.java:134) at com.sun.faces.application.ApplicationImpl.processListeners(ApplicationImpl.java:2292) at com.sun.faces .application.ApplicationImpl.invokeListenersFor(ApplicationImpl.java:2265) at com.sun.faces.application.ApplicationImpl.publishEvent(ApplicationImpl.java:351) at javax.faces.application.ApplicationWrapper.publishEvent(ApplicationWrapper.java:761) at com.sun.faces.application.view.FaceletViewHandlingStrategy.buildView(FaceletViewHandlingStrategy.java:405) 在 com.sun.faces.lifecycle.RenderResponsePhase.execute(RenderResponsePhase.java:102) 在 com.sun.faces.lifecycle.Phase。 doPhase(Phase.java:100) 在 com.sun.faces.lifecycle.LifecycleImpl.render(LifecycleImpl.java:223) 在 javax.faces.webapp.FacesServlet.service(FacesServlet.java:671) 在 io.undertow.servlet.handlers.ServletHandler.handleRequest(ServletHandler.java:74) 在 io.undertow.servlet.handlers.FilterHandler$FilterChainImpl .doFilter(FilterHandler.java:129) 在 [APPLICATION_CODE].filters.NoCacheFilter.doFilter(NoCacheFilter.java:36) 在 io.undertow.servlet.core.ManagedFilter.doFilter(ManagedFilter.java:61) 在 io.undertow。 servlet.handlers.FilterHandler$FilterChainImpl.doFilter(FilterHandler.java:131) at io.undertow.servlet.handlers.FilterHandler.handleRequest(FilterHandler.java:84) at io.undertow.servlet.handlers.security.ServletSecurityRoleHandler.handleRequest( ServletSecurityRoleHandler.java:62) 在 io.undertow.servlet.handlers.ServletChain$1.handleRequest(ServletChain.java:68) 在 io.undertow。servlet.handlers.ServletDispatchingHandler.handleRequest(ServletDispatchingHandler.java:36) 在 org.wildfly.elytron.web.undertow.server.ElytronRunAsHandler.lambda$handleRequest$1(ElytronRunAsHandler.java:68) 在 org.wildfly.security.auth.server .FlexibleIdentityAssociation.runAsFunctionEx(FlexibleIdentityAssociation.java:103) 在 org.wildfly.security.auth.server.Scoped.runAsFunctionEx(Scoped.java:161) 在 org.wildfly.security.auth.server.Scoped.runAs(Scoped.java :73) 在 io.undertow.servlet.handlers.security.SSLInformationAssociationHandler.handleRequest(SSLInformationAssociationHandler.java:132) 在 io.undertow.servlet.handleRequest(SSLInformationAssociationHandler.java:132) 在 org.wildfly.elytron.web.undertow.server.ElytronRunAsHandler.handleRequest(ElytronRunAsHandler.java:67)。 undertow.servlet.handlers.security.ServletAuthenticationCallHandler。handleRequest(ServletAuthenticationCallHandler.java:57) at io.undertow.server.handlers.PredicateHandler.handleRequest(PredicateHandler.java:43) at io.undertow.security.handlers.AbstractConfidentialityHandler.handleRequest(AbstractConfidentialityHandler.java:46) at io.undertow .servlet.handlers.security.ServletConfidentialityConstraintHandler.handleRequest(ServletConfidentialityConstraintHandler.java:64) 在 io.undertow.security.handlers.AbstractSecurityContextAssociationHandler.handleRequest(AbstractSecurityContextAssociationHandler.java:43) 在 io.undertow.server.handlers.PredicateHandler.handleRequest(PredicateHandler .java:43) 在 org.wildfly.extension.undertow.security.jacc.JACCContextIdHandler.handleRequest(JACCContextIdHandler.java:61) 在 io.undertow.server.handlers.PredicateHandler。handleRequest(PredicateHandler.java:43) at org.wildfly.extension.undertow.deployment.GlobalRequestControllerHandler.handleRequest(GlobalRequestControllerHandler.java:68) at io.undertow.server.handlers.PredicateHandler.handleRequest(PredicateHandler.java:43) at io .undertow.servlet.handlers.ServletInitialHandler.handleFirstRequest(ServletInitialHandler.java:292) 在 io.undertow.servlet.handlers.ServletInitialHandler.access$100(ServletInitialHandler.java:81) 在 io.undertow.servlet.handlers.ServletInitialHandler$2.call (ServletInitialHandler.java:138) 在 io.undertow.servlet.handlers.ServletInitialHandler$2.call(ServletInitialHandler.java:135) 在 io.undertow.servlet.core.ServletRequestContextThreadSetupAction$1.call(ServletRequestContextThreadSetupAction.java:48) 在 io。 undertow.servlet.core。ContextClassLoaderSetupAction$1.call(ContextClassLoaderSetupAction.java:43) at org.wildfly.extension.undertow.deployment.UndertowDeploymentInfoService$UndertowThreadSetupAction.lambda$create$0(UndertowDeploymentInfoService.java:1502) at org.wildfly.extension.undertow.deployment.UndertowDeploymentInfoService$ UndertowThreadSetupAction.lambda$create$0(UndertowDeploymentInfoService.java:1502) 在 org.wildfly.extension.undertow.deployment.UndertowDeploymentInfoService$UndertowThreadSetupAction.lambda$create$0(UndertowDeploymentInfoService.java:1502) 在 org.wildfly.extension.undertow.deployment。 UndertowDeploymentInfoService$UndertowThreadSetupAction.lambda$create$0(UndertowDeploymentInfoService.java:1502) 在 org.wildfly.extension.undertow.deployment.UndertowDeploymentInfoService$UndertowThreadSetupAction。lambda$create$0(UndertowDeploymentInfoService.java:1502) 在 io.undertow.servlet.handlers.ServletInitialHandler.dispatchRequest(ServletInitialHandler.java:272) 在 io.undertow.servlet.handlers.ServletInitialHandler.access$000(ServletInitialHandler.java:81)在 io.undertow.servlet.handlers.ServletInitialHandler$1.handleRequest(ServletInitialHandler.java:104) 在 io.undertow.server.Connectors.executeRootHandler(Connectors.java:360) 在 io.undertow.server.HttpServerExchange$1.run(HttpServerExchange .java:830) 在 org.jboss.threads.ContextClassLoaderSavingRunnable.run(ContextClassLoaderSavingRunnable.java:35) 在 org.jboss.threads.EnhancedQueueExecutor.safeRun(EnhancedQueueExecutor.java:1985) 在 org.jboss.threads.EnhancedQueueExecutor$ThreadBody。 doRunTask(EnhancedQueueExecutor.java:1487) 在 org.jboss。thread.EnhancedQueueExecutor$ThreadBody.run(EnhancedQueueExecutor.java:1378) 在 java.lang.Thread.run(Thread.java:748)

我不明白 Yasson 和 Primefaces 之间的关系是什么,因为日志中没有任何内容。我所知道的是,我在 Yasson 1.0.1 中没有遇到这个错误。

0 投票
1 回答
134 浏览

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

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

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

0 投票
1 回答
316 浏览

java - 在 JPA 实体上应用 Jackson 的 Stakover 流错误以生成 JSON

我有一个关系JPA代码OneToMany。ACustomer有一个Item要签出的列表。但是,代码继续生成StackOverflowError

有一次,我通过在从客户实体中@JsonIgnore获取时应用解决了这个问题。List<Item>但即使这样似乎也不再起作用了。

Customer课堂上:

Item课堂上:

CustomerRest类:

方法newSessionBean.getCustomers()

我希望收到格式良好的 JSON 消息,但没有任何迹象。我得到的只是java.lang.StackOverflowError浏览器上的,服务器日志生成以下内容: