java - 如何使用 ObjectMapper 将 String 转换为 java8 中的列表?

标签 java jackson objectmapper

我有一个名为 primarySkillStr 的 JSON 字符串:

[
  {
    "id": 3,
    "roleIds": [
      2
    ],
    "rating": 2
  }

]

我尝试将它映射到一个对象,如下所示:

primarySkillList = mapper.readValue(primarySkillStr, 
    new TypeReference<List<PrimarySkillDTO>>() {});

但是当我将其转换为 List 时,roleIds List 为 null。 是我做错了什么,还是有其他办法?

这是我的DTO

public class PrimarySkillDTO {
    private Integer id;
    private Integer rating;
    private List<Integer> roleIds;
    private String name;
}

我在 PrimarySkillDTO 类中有以下注释

@Data
@Builder
@AllArgsConstructor
@JsonIgnoreProperties(ignoreUnknown = true)
@JsonInclude(JsonInclude.Include.NON_NULL)
@JsonNaming(PropertyNamingStrategy.SnakeCaseStrategy.class)

最佳答案

问题是您的 JsonNaming 注释需要 snake_case 而您没有使用它。

解决

  • 删除注解@JsonNaming(PropertyNamingStrategy.SnakeCaseStrategy.class)
  • 或者,将 JSON 字符串中的变量重命名为 role_ids

关于java - 如何使用 ObjectMapper 将 String 转换为 java8 中的列表?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42389386/

相关文章:

java - 如何解决 tomcat 内存泄漏警告 - Web 应用程序启动了一个线程但未能停止它

java - 使用 Jackson 将 MongoDB 日期字段反序列化为 Java POJO

swift - 创建实现 Mappable 接口(interface)的对象的新实例

java - 在 hibernate 聚合函数中使用函数作为参数

java - 如何通过比较值对 HashMap 的条目进行排序,其中每个值都是一个 int[]?

java - 空指针异常。无法读取流

java - Jackson 对象映射器在响应中包含转义序列

java - 如何在 Swagger 中描述多态端点?

ios - 使用对象映射器解析嵌套的字典数组

json - 错误 : Expected declaration, 使用未声明的类型 'Object',使用未声明的类型 'JSON'