问题标签 [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.
jax-rs - 强制 JSON-B 在生成 JSON 时将数字写为字符串
我在我的 Java 代码中处理大量数字,并且由于 JavaScript 的限制(即整数的 32 位支持),我需要将这些数字写为我的应用程序返回的 JSON 中的字符串。
是否有全局配置或注释可以让我这样做?如果可能,我想避免编写自定义序列化程序/适配器。
我正在使用带有新 JSON-B/Yasson 支持的 RestEasy。
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.
java - jsonb 1.0 / eclipse yasson 忽略没有 bean 访问器方法的私有属性
根据我假设是官方用户指南http://json-b.net/users-guide.html,引擎应该序列化它找到的任何属性,有或没有 bean 访问器方法(我意识到 Dog 示例使用 public字段,但请参阅私有字段的 Person 示例)。
鉴于这些类:
当我像这样序列化它时:
输出是这样的:
我看到的是,在 Rectangle 中,只有宽度被序列化,因为它是公共的。length1 和 length2 被忽略,因为它们是私有的,即使 length2 上有属性注释。Rectangle2 是完全序列化的,因为它有 bean 方法。
一定要这样吗?要求我将所有字段公开且可变以启用序列化似乎是一个巨大的限制。
我的依赖项是这样设置的:
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绑定,但目前还没有解决方案。
java - 为什么在使用带有 JSON-B 的 Yasson 时需要来自 Glassfish 的 javax.json 作为依赖项?
为了使用Java API for JSON Binding (JSON-B),我发现有必要在我的Maven POM中包含以下三个依赖项:
前两个对我来说很有意义。
jakarta.json.bind-api
是JSR 367定义的JSON-B API 。yasson
是该 API 的参考实现,Eclipse Yasson。
javax.json
➥ 但是来自Glassfish的第三个依赖项到底给聚会带来了什么?为什么我的应用程序需要它才能运行?
如果省略,在运行时Jsonb jsonb = JsonbBuilder.create();
,我会收到此错误:
javax.json.JsonException:未找到提供程序 org.glassfish.json.JsonProviderImpl
我很困惑,因为我认为 Yasson是我的 JSON 处理实现。
json - localdate json 与 Wildfly 服务器中的 yasson 实现绑定
如果我在实体类中使用 LocalDate 类型,如果我发送 POST 请求,则会收到以下错误:
如果我将我的属性类型从
至
有用!
我已经使用 Wildfly 15 和 16(Eclipse Yasson 实现)进行了测试,新的 Java 日期类似乎不适用于 JSON-Bindings。
这是不支持还是我有什么问题?
jax-rs - 如何从 JSON 对象序列化中排除 Weld 元数据
假设以下 REST 资源:
getBo() JSON(但不是 XML)的 REST 响应返回以下内容:
JSON 响应包含一个额外的“元数据”字段——如何将项目配置为不生成它,或者避免生成它?CDI 容器是 Weld,而 JSON 序列化程序由 Yasson 提供。
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 中没有遇到这个错误。
json - 我需要与 Yasson 绑定 JSON 的 getter 吗?
我试图避免我的 POJO 上的 getter 和 setter,但 Jersey 正在使用我的 getter 方法将我的 POJO 转换为 JSON。
我尝试使用 Yasson,但是当我尝试删除我的吸气剂时,它只返回空白 JSON。
java - 在 JPA 实体上应用 Jackson 的 Stakover 流错误以生成 JSON
我有一个关系JPA
代码OneToMany
。ACustomer
有一个Item
要签出的列表。但是,代码继续生成StackOverflowError
。
有一次,我通过在从客户实体中@JsonIgnore
获取时应用解决了这个问题。List<Item>
但即使这样似乎也不再起作用了。
在Customer
课堂上:
在Item
课堂上:
和CustomerRest
类:
方法newSessionBean.getCustomers()
:
我希望收到格式良好的 JSON 消息,但没有任何迹象。我得到的只是java.lang.StackOverflowError
浏览器上的,服务器日志生成以下内容: