问题标签 [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 投票
1 回答
1103 浏览

java - 如何在 Jersey 客户端中默认使用 Genson 提供程序?

我有基于 Jersey 框架的简单客户端。
我想使用 Genson 作为默认 JSON 提供程序。
首先,我创建了一些实现的类ContextResolver

和 UtcDateFormat 类:

然后我用这个:

但是,它失败了。这里是日志:

怎么了?
PS Jersey 客户端 1.8
Genson 0.98

0 投票
1 回答
1199 浏览

java - 使用 genson 解析嵌套的 JSON

我正在尝试将一些从 Web API 获得的 JSON 解析为 Java 对象并且遇到了一些问题。

这是JSON:

现在我想将以下数据映射到 Java 类,以便结果是 Catalog 对象,结果数组中的值是 CatalogEntry 对象:

通过以下行,我尝试将 JSON 字符串反序列化为 Catalog 对象:

之后,我尝试获取 Catalog 对象中的值,但得到 NullPointerException,因为它似乎是空的。我认为反序列化对 JSON 中的“d”对象有问题,但我该如何解决呢?任何帮助,将不胜感激。

0 投票
1 回答
458 浏览

json - Jersey Rest 服务 - 有没有办法在响应中限制和订购 XMLElements?

我有一个输出 POJO 列表的 REST 服务。响应 XML/JSON 包含使用 XMLElement 注释的所有字段。有没有办法限制响应中的字段(在运行时以编程方式)?我也可以在运行时再次指定字段的顺序吗?

POJO:

只有在提交请求时才知道字段和顺序。所以像 JSONIgnore 这样的注释对我没有帮助。我该怎么做?我试过金森。虽然我可以限制 JSON 响应中的字段,但我无法对 XML 响应执行此操作。我也无法订购这些字段。

0 投票
1 回答
1734 浏览

java - 使用 Genson 和 Jersey 从 POST 解析 JSON 日期

Quick Intro(可以跳过): 嗨,关于这个话题有很多问题和答案,但有时解决方案很简单,你甚至都没有想到,因为我已经失去了很多我想要的时间发布所有答案的补充。

问题: 您有一个 JSON REST 服务来处理 POST 请求以保存 JSON 对象,但该对象包含一个 Date 字段,该字段未被 Genson 开箱即用地解析。

Java 对象:

Jersey 的 REST 服务:

带有 jQ​​uery 的 javascript 客户端:

0 投票
1 回答
542 浏览

java - Genson 阻塞了我的 JAX RS 服务的有效 json 输出

我正在尝试使用 genson 1.3 将来自我的 jax rs 服务的 json 响应反序列化为如下所示的对象列表:

我用 jsonlint 检查了它,它是有效的。我正在尝试List<LogicalVolumeImpl>使用以下代码将其反序列化

并得到这个例外:

据我了解,这很可能是由于将“group”对象属性减少为对象的 id(“group”:2 而不是 genson 预期的完全展开的对象)。

我能做些什么?我尝试在 GensonBuilder 中使用 exclude(String field) 排除组属性,但它生效了。

更新

LogicalVolumeImpl 和 VolumeGroupImpl 的来源

0 投票
3 回答
2985 浏览

java - Jersey 客户端发送带有 application/json 类型的字符串

我需要使用and发送一个已经JSON格式化的字符串Jersey client 1.19genson 1.3

问题在于客户端正在解析字符串,我需要按原样发送它。我正在发送类似的东西{ "name":"Foo" },而客户正在将其转换为"{ \"name\":\"Foo\" }". 如果我将类型更改为PLAIN_TEXT它会正确发送请求,但我需要将其发送为application/json.

0 投票
1 回答
92 浏览

java - Genson 属性读取错误

我使用http://www.jsonschema2pojo.org/从 json 模板创建了一个类,并使用 Genson 将我的 json 映射到基于 Jersey 的 WS。这是我的“json 类”的第一行:

我的班上也有 getter 和 setter。

我创建了一个 restfull Ws 来处理发布请求,并且我尝试使用 firefox RESTClinent 插件发送 jsons 对象。

这是我尝试发送的 json 对象的第一行:

我的 WS Post 处理程序方法如下所示:

我的请求到达,并且createInvoice()调用了该方法,但是如果我调用newBillingoInvoice.getDueDate()它,则返回 null,但是当我调用newBillingoInvoice.getSignature()它时,它会返回我在请求 json 中发送的值。等等。如果我调用newBillingoInvoice.getXY();返回null,并且如果我调用newBillingoInvoice.getOtherSomething();返回值.. ETC..

我的问题是,一个属性在同一个对象中null而另一个不在null同一个对象中怎么会发生?当我创建请求时,我设置了所有属性都没有null

请帮我!谢谢!

0 投票
1 回答
836 浏览

java - Genson 多态/泛型序列化

我正在尝试使用Genson 1.3 为多态类型在 Java 中实现 JSON 序列化,包括:

  • Numbers
  • 数组
  • Enum班级

下面的 SSCCE 大致展示了我想要实现的目标:

数字和数组开箱即用效果很好,但枚举类提供了一些挑战。在这种情况下,序列化的 JSON 形式必须是 IMO 一个 JSON 对象,包括:

  • 类型成员
  • 价值成员

查看EnumConverter课程,我发现我需要提供一个自定义的Converter. 但是我不能完全掌握如何正确注册,Converter以便在反序列化期间调用它。应该如何使用 Genson 解决这个序列化问题?

0 投票
1 回答
57 浏览

java - Bean 访问器的 Genson 缓存

我最近升级到 Genson 1.3,我不能 100% 确定这个问题是否是新问题,因为之前我修补了 0.98 版本以使其正常工作。

语境

我们正在使用我们自己的 BeanMutatorAccessorResolver 实现。这样我们就可以动态地决定一个属性是否应该被序列化。基本上,我们已将 Genson 集成到我们的通用球衣 REST API 接口中。Genson 做了所有的序列化和反序列化。在执行 GET 请求时,用户可以在 URL 中传递字段以过滤他特别需要的字段(特别是对于大型对象,当您只需要 3 个左右的字段来显示表格概览时,这是必要的)。例如:?fields=field1, field2, field3。然后,我们在 BeanMutatorAccessorResolver 的实现中确切地知道要序列化哪些字段以及要忽略哪些字段。这主要是为了加快请求和解析,因为我们使用的数据更少。

问题

不幸的是,似乎一旦 Genson 通过反射或其他方式读取了所有字段,它就会缓存它。如果我们总是请求相同的字段,这将没有问题。不幸的是,在某些情况下,我们需要比以前更多的字段,但是因为 Genson 没有第二次访问我们的 BeanMutatorAccessorResolver,它只返回它已经缓存的少数字段。

有没有办法解决?也许有比完全关闭cahing更好的解决方案——因为这很可能会损害性能,对吧?

更新

似乎我找到了发生这种情况的位置。基本上,Genson 在 Genson.provideConverter(Type forType) (第 154 行)中返回一个缓存的转换器。

在该方法的顶部,我注意到它会查找 __GENSON$DO_NOT_CACHE_CONVERTER。

我应该设置这个值还是有更好的解决方案?

0 投票
1 回答
253 浏览

android - android的Genson问题-找不到scala.Array

我使用scala(macroid框架,如果重要的话)为android制作了一个应用程序。我在使用 Genson 库反序列化 JSON 时遇到问题。

这是最小的错误代码

我在模拟器上运行此代码时遇到下一个错误

在 PC 上运行时反序列化工作正常(作为独立的 scala 应用程序)

我已经-keep class com.owlike.genson.*{ *; }向 build.sbt 添加了选项,正如这里推荐的那样,但是它没有帮助。这是我的 build.sbt 的一部分:

我尝试将 -keep class scala.Array, 添加到 proguard 选项,它也无济于事。

我还可以做些什么?


编辑:我没有在genson上取得成功,现在使用gson。Gson 对我来说很好用。