问题标签 [jackson-module-scala]

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 回答
7586 浏览

scala - 使用 Scala Jackson 进行 JSON 反序列化?

我是 scala 的新手,并试图将我的 json 映射到一个对象。我找到了 jackson-scala-module 但无法弄清楚如何使用它。一个小例子可能会有所帮助。

我想将此映射到Person(name: String, age: Int, height: Int, weight: Int)

直到现在我一直在尝试使用这个:

我正在使用的依赖项:

我错过了什么吗?

编辑:

0 投票
2 回答
219 浏览

json - Jackson:使用任意非字符串键(反)序列化 Map

我有一个由本身需要序列化为 JSON 的类型键入的 Scala Map。由于 JSON 的性质要求对象的键名是字符串,因此无法直接进行简单的映射。

我希望实现的解决方法是在序列化为 JSON 之前将 Map 转换为 Set,然后在反序列化后从 Set 转换回 Map。

我知道在特定类型上使用密钥序列化程序的其他方法,例如Serialising Map with Jackson,但是,我需要一个适用于任意密钥类型的解决方案,在这方面,转换为 Set 并再次转换在我看来是最好的选择。

通过从下面的jackson-module-scala修改MapSerializerModule.scala ,我已经成功地将带有包装对象的 Set 序列化为 Set ,但我对 Jackson 的内部结构不够熟悉,无法让 JSON 反序列化回我开始的 Map和。

我应该补充一点,我控制序列化和反序列化方面,所以 JSON 看起来并不重要。

0 投票
1 回答
646 浏览

json - 默认情况下停止 jackson-scala-module 序列化所有字段

使用DefaultObjectMapperfrom jackson-scala-module,在以下示例中,在 Scala 版本field 序列化,但在 Java 版本中不序列化。设置com.fasterxml.jackson.databind.MapperFeature.AUTO_DETECT_FIELDS没有效果。

我希望没有字段被序列化,除非一个字段用com.fasterxml.jackson.annotation.JsonInclude.

斯卡拉

爪哇

0 投票
1 回答
765 浏览

scala - Kafka json反序列化器中的Scala classOf泛型类型

我正在使用杰克逊在 scala 中编写一个 kafka json 反序列化器,但是在为杰克逊的readValue()方法提供泛型类型的类时遇到问题。例如:

注意方法mapper.readValue(bytes, classOf[T])中的deserialize。编译失败,出现“需要类类型但找到 T”。

如何才能做到这一点?

0 投票
1 回答
331 浏览

scala - Scala:如何防止 Jackson 使用 null 反序列化

假设我有一个案例,例如:

case class Stuff(name:String,stuffs:List[String] = List.empty)

如何防止杰克逊反序列化 json

我希望它用

有没有办法配置杰克逊以这种方式工作?还是我必须定义其他构造函数。例如缺少stuffs

0 投票
1 回答
355 浏览

json - 某些字段上的杰克逊注释混合不起作用

前言

我想将json反序列化为以下类

使用以下代码:

但由于 jackson 中的错误(如常见问题解答中所述),
以下代码将失败:

有错误:

java.lang.Integer 不能转换为 java.lang.Long

创建以下 mixin 解决了该错误,并且代码按预期工作:

问题

在我的案例Target中,类包含很多字段,其中只有一个需要注释。
因此,我想Mixin只用一个参数来创建:

但是当Mixin这样定义时,注释似乎没有应用,并且这段代码再次失败:

有没有办法让它工作?


重现问题的完整代码:

0 投票
1 回答
590 浏览

scala - 启用 DefaultTyping 时使用 Jackson Scala 枚举序列化失败

OBJECT_AND_NON_CONCRETE当使用设置启用 DefaultTyping 时,我看到 Jackson 库无法序列化 Scala 枚举。请注意,当我使用JAVA_LANG_OBJECT设置时,序列化工作正常。

我看到以下异常

这是一个示例代码

我试过使用https://github.com/FasterXML/jackson-module-scala/wiki/Enumerations@JsonScalaEnumeration中提到的,但似乎没有帮助。

提前致谢。