问题标签 [genson]

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 投票
2 回答
222 浏览

java - 使用多态成员将 Json 反序列化为 Java

我正在尝试使用 genson 将 json 字符串反序列化为 java 对象,但未能成功。我的班级结构是这样的:

如您所见, andComplexCondition可能有 anotherComplexCondition或 aSimpleCondition作为其成员。我得到的json是这样的:leftright

在这个 json 中,a既有ComplexConditions 又有lefts 。但是我收到的一般 json 字符串可以是从 a到 s 的任何嵌套级别的任何内容。我尝试在 json 字符串中设置值,但 genson 仍然无法反序列化它。我感谢使用任何库将此 json 反序列化为 java 的任何帮助。rightSimpleConditionSimpleConditionComplexCondition@class

0 投票
2 回答
445 浏览

json - 只想包含 Genson 映射到 JSON 的对象的某些字段

我的 Pojo 类包含 50 个字段,我只需要将 10 个字段转换为 json。

“include()”方法似乎不起作用。请帮忙。

0 投票
1 回答
2735 浏览

java - Jersey 中的 ContextResolver 和 Provider 是什么?

ContextResolver泽西岛的 a 是什么,什么是a Provider?两者有什么区别?我在泽西岛使用 Genson。当 Jersey 在类路径中找到 Genson JAR 时,Genson 会自动注册。Genson JAR 的 WEB-INF/services 目录包含一个名为“org.glassfish.jersey.internal.spi.AutoDiscoverable”的文件。

按照该AutoDiscoverable路径,默认情况下 Genson/Jersey 会自动注册以下类:

这里是更多混乱发挥作用的地方:查看它建议创建自定义提供程序的 Genson 文档,如下所示:

然而,该提供者实现了一个不像内部 Genson 那样ContextResolver的/Writer 。MessageBodyReader有什么不同?此外,该提供商不会与默认自动注册的一样的事情!特别是,它会忽略JAXB 标签,例如@XmlTransient! 深入研究 Genson 源代码GensonJaxRSFeature,我看到 Genson 对象是这样创建的:

从中和 Genson 文档中,我可以看到“JAXBBundle”可能是导致 Genson 关注 JAXB 注释的原因。

主要问题:

我想使用在 Jersey 自动注册的默认 Genson JSON 提供程序,但我想在其上设置一些自定义属性。正如我所说,当我注册我的自定义提供程序时,它不使用默认的 Genson !


更新:

这就是我现在正在做的事情,并且有效。但是,@eugen 下面的解决方案是 Genson 推荐的解决方案。

0 投票
1 回答
118 浏览

java - Genson 抛出 ArrayIndexOutOfBoundsException

Genson 的内部库代码导致了 ArrayIndexOutOfBoundsException,因为它试图索引一个我认为为空的数组。见下文。

我得到以下堆栈跟踪:

它是由 Genson 库中的以下方法引起的:

它来自方法中的以下代码:method.getGenericParameterTypes()[0]。当我调试它说该方法是“错误”。它试图对 MyObject 具有以下方法的 List 进行操作(仅显示失败的方法):

如何解决此错误?金森为什么要这么做?

0 投票
1 回答
237 浏览

java - Genson 1.4 (JSON) 不处理继承的 Pojo

我在我的 REST 实现中使用 genson 1.4 进行 JSON 处理,使用 genson 时 JSON 继承不起作用。请在下面找到示例代码结构。

这是我的基础对象

这是我的儿童班

这是我的响应对象

}

这是 GENSON JSON 输出:

{"baseObject":{"status":null},"errorCode":null,"errorMessage":null,"primaryKey":null}

CountryCodeareaCode并且localNumber在 JSON 中丢失,只处理基类。从这样的代码中尝试相同

输出与其余服务中的输出相同。

0 投票
1 回答
61 浏览

java - Genson:在使用 RuntimePropertyFilter 时处理子属性

对于我使用的 Genson 配置UrlQueryParamFilter。它有效,但不像我预期的那样。
我的实体:

“rootEntity”端点绑定到Root在我的休息服务中获得一些实例。当我得到时,http://<host>/myservice/rootEntity?filter=childs我预计会得到所有孩子的所有孩子的属性。但实际上我只得到了孩子的结构:

我想得到什么:

我该如何解决?
谢谢。

0 投票
1 回答
606 浏览

java - 我的第一个 Web 客户端给出“找不到媒体类型的 MessageBodyWriter...”(JSON)

我先给你讲个短篇。如果我在 Eclipse 中使用 jar 文件导出我的 jar 文件(Runnable Jar 向导并选择“Package required libraries...”)而不是“Extract required libraries”,那么一切正常,但运行起来非常缓慢。如果我使用提取方法构建我的 jar,代码将导致最终

我没有使用 Maven。我还不知道。在大多数情况下,我大多对 Eclipse 缺乏经验,但我已经到了那里。我以为 Genson 会给我创建 JSON 所需的东西。

如果我列出我的 jar 文件和 grep 的 MessageBodyWriter,我会得到

为了获得更长的故事,我在 Eclipse 中创建了一个简单的 Java 项目,将外部 jars 添加到我的构建路径中。Eclipse 不会抱怨缺少任何东西。我的代码中只有一两个关于未使用的 this-and-thats 的警告。无论我怎么做,导出都很好,没有问题。只有处决才会显示出一些恼怒。

在我的请求课程中,我相信我已经正确设置了所有内容。这是可以想象到的最简单的 POST 客户端。我有必要的空构造函数,正确的注释。

这是我失败的终极召唤

这些是我的外部罐子

我觉得罐子里有些东西没有正确“导出”,但我不确定。只是在这里猜测,因为 Java 必须经历分解大 jar 中所有 jar 的过程,它会找到开始执行所需的内容,而对于大 jar 中的 .classes,它不会。

暂时迷路了,但还是坚持了下来。我很感激任何指示。

0 投票
0 回答
158 浏览

java - 可运行 jar 创建的细节(Jersey & Genson)

我每次都可以使用 Eclipse 的 Runnable Jar 向导创建一个可运行的 jar。如果我选中 Eclipse 的框以“另存为 ANT 脚本”,然后将该代码合并到 build.xml 中,然后让我们的 GitLab CI 进程进行构建并创建一个可运行的 jar,它会运行,但似乎找不到即使 .class 文件在那里,该 jar 中的一个类。

我不知道从哪里开始。Eclipse 构建与独立 java/ant 构建生成的 jar 文件相似,但不完全相同。有几件事出了问题,但目前我只能说这些了。

我怎样才能开始磨练这个?我的程序是 Jersey 网络客户端。我正在使用Genson,我在独立 jar 构建中收到的错误消息是

但我可以列出 jar 文件并且都有这些条目

现在我可以通过在 Eclipse 中构建并手动部署文件来解决它,但这当然是不可接受的。

编辑:感谢一位乐于助人的朋友,我被指出了 META-INF/services 的内容。我不知道这是什么意思,但这是两个罐子里的内容。

EDIT3:每个重复的 org.glassfish.jersey.internal.spi.AutoDiscoverable的内容(3)

  1. com.owlike.genson.ext.jaxrs.JerseyAutoDiscoverable
  2. org.glassfish.jersey.logging.LoggingFeatureAutoDiscoverable
  3. org.glassfish.jersey.server.filter.internal.ServerFiltersAutoDiscoverable

org.glassfish.jersey.internal.spi.ForcedAutoDiscoverable (2)

  1. org.glassfish.jersey.jaxb.in​​ternal.JaxbAutoDiscoverable
  2. org.glassfish.jersey.logging.LoggingFeatureAutoDiscoverable

与 Eclipse 构建的“好”jar 文件相比,它没有重复项:

org.glassfish.jersey.internal.spi.AutoDiscoverable com.owlike.genson.ext.jaxrs.JerseyAutoDiscoverable

我想我会研究其他 META-INF 的东西,所以看看能看到什么。

org.glassfish.jersey.internal.spi.ForcedAutoDiscoverable org.glassfish.jersey.jaxb.in​​ternal.JaxbAutoDiscoverable

0 投票
0 回答
90 浏览

java - 使用 Genson 的运行时序列化条件

Genson 是否可以在运行时有条件地序列化对象属性?换句话说,由于条件而在运行时包含/排除属性?

我已经阅读了文档中的 RuntimePropertyFilter,但没有关于如何使用它的示例。

提前致谢!

0 投票
1 回答
108 浏览

java - Genson 不使用带有 @Transient 注释的 Hibernate POJO 字段

为了在 Java 中实现 REST API,我使用: - Jersey JAX-RS 框架 - Genson 解析器 - Tomcat8 服务器 - Hibernate

我在服务类中有这个方法:

Users班级:

如您所见,我创建该idGroup字段只是为了存储相关对象的 id UsersGroups,所以如果我想在创建用户的那一刻添加组,我只需将其 id 包含在 JSON 中而不是UsersGroups对象(关系是可选的,用户可以属于或不属于某个组)。问题是 GensonUsers在使用 JSON 时没有将此字段添加到对象中:

如果我发布这个 JSON 然后访问user.getIdGroup(),它返回 0,所以我假设该idGroup字段没有被使用。注释@Transient是否与此问题有关?关于如何解决它的任何想法?如果问题是 Genson 并且有任何使用另一个 JSON 解析器(如 Jackson)的解决方案,我可以考虑切换