当前位置: 首页 > 知识库问答 >
问题:

dropwizard中的反序列化问题,无法将ImmutableList转换为字符串列表

柳飞飙
2023-03-14

我正在使用dropwizard 1.1.0和java 8功能。我也在使用Immutables包。我在尝试将利润中心列表(字符串列表)从JSON转换为java等价物时,遇到了反序列化问题。

错误

找不到非具体集合类型的反序列化器[集合类型;类com.google.common.collect.ImMutableList,包含[简单类型,类java.lang.字符串]]

不可变Java类

@Value.Immutable
@JsonSerialize(as = ImmutableReconciliationInputDTO.class)
@JsonDeserialize(as = ImmutableReconciliationInputDTO.class)
public interface ReconciliationInputDTO extends Serializable {

@JsonProperty("date")
@JsonDeserialize(using = LocalDateDeserializer.class)
@JsonSerialize(using = LocalDateSerializer.class)
LocalDate asOfDate();

@JsonProperty("label")
String label();

@JsonProperty("entityId")
String entityId();

@JsonProperty("entityName")
String entityName();

@JsonProperty("departments")
List<String> departments();

不可变项将上述DTO生成为具有以下属性的最终类

public final class ImmutableReconciliationInputDTO
 implements ReconciliationInputDTO {
private final LocalDate asOfDate;
private final String label;
private final String entityId;
private final String entityName;
private final ImmutableList<String> departments;

在dropwizard应用程序引导程序中,我注册了以下模块

    bootstrap.getObjectMapper().registerModule(new JavaTimeModule());
    bootstrap.getObjectMapper().registerModule(new Jdk8Module());
    bootstrap.getObjectMapper().registerModule(new ParameterNamesModule());

在我的POM中。xml我将以下设置为我的依赖项

<dependency>
    <groupId>com.fasterxml.jackson.module</groupId>
    <artifactId>jackson-module-parameter-names</artifactId>
    <version>2.8.7</version>
</dependency>
<dependency>
    <groupId>com.fasterxml.jackson.datatype</groupId>
    <artifactId>jackson-datatype-jdk8</artifactId>
    <version>2.8.7</version>
</dependency>
<dependency>
    <groupId>com.fasterxml.jackson.datatype</groupId>
    <artifactId>jackson-datatype-jsr310</artifactId>
    <version>2.8.7</version>
</dependency>

共有1个答案

乐正翰
2023-03-14

当然,你也应该把番石榴作为杰克逊的一个模块。它在这里:番石榴模块

他们还有一个如何集成它的示例:

registerModule(new GuavaModule())
 类似资料:
  • 问题内容: 我有这个字符串: 我正在反序列化对象: 该对象看起来像: 并尝试创建字典: 但得到。 可能是什么问题? 问题答案: 请参阅mridula的答案,了解为什么您会得到null。但是,如果您想直接将json字符串转换为字典,则可以尝试以下代码段。

  • 问题内容: 我有以下类,它是由Jackson映射的(简化版): 在某些情况下,服务器会返回,然后我想将name设置为空的Java String。 是否有任何Jackson注释,或者如果属性为,我应该只检查getter中的null并返回空字符串? 问题答案: 您可以在默认构造函数中或声明时进行设置: 要么

  • 我有以下由Jackson映射的类(简化版): 在某些情况下,服务器返回,然后我想将name设置为空Java字符串。 是否有任何Jackson注释,或者如果属性为,我应该只检查getter中的null并返回空字符串吗?

  • 问题内容: 我有一个使用long作为ID的定制类。但是,当我使用ajax调用操作时,我的ID被截断并且丢失了最后2个数字,因为javascript处理大数字时会失去精度。我的解决方案是给我的JavaScript字符串,但是ID必须在服务器端保留很长时间。 有没有一种方法可以将属性序列化为字符串?我在寻找某种属性。 控制者 模型 JSON结果 问题答案: 您可能可以创建一个自定义并将其应用于您的媒体

  • 问题内容: 我使用了很多不可变的集合,并且很好奇如何使用Gson反序列化它们。由于没有人回答,而且我自己找到了解决方案,因此我正在简化问题并提出自己的答案。 我有两个问题: 如何为所有人编写一个作品? 如何全部注册? 问题答案: 更新:有https://github.com/acebaggins/gson- serializers ,其中涵盖了许多番石榴集合: 如何编写适用于所有Immutable

  • 使用jackson-module-Scala,我尝试使用Long as键序列化和反序列化一个带有内部映射的对象,但是Jackson将键序列化为字符串,如果gnoring类中EKINED的类型,它就不会反序列化为Long。是虫子吗?我做错什么了吗? null 示例:https://github.com/angelcervera/jackson-scala-map-bug