我有一个名为primarySkillStr
的JSON字符串:
[
{
"id": 3,
"roleIds": [
2
],
"rating": 2
}
]
我尝试将其映射到对象,如下所示:
primarySkillList = mapper.readValue(primarySkillStr,
new TypeReference<List<PrimarySkillDTO>>() {});
但是,当我将其转换为List
时,roleIds
列表为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)
答案 0 :(得分:4)
问题是你的JsonNaming
注释需要snake_case而你没有使用它。
解决问题
@JsonNaming(PropertyNamingStrategy.SnakeCaseStrategy.class)
role_ids
答案 1 :(得分:0)
SnakeCaseStrategy将映射roleIds <-> role_ids,以下代码对我有用:
ObjectMapper objectMapper = new ObjectMapper();
TypeReference<List<TestClass>> typeRef = new TypeReference<List<TestClass>>() {};
List<TestClass> testList = objectMapper.readValue(testStringObject, typeRef);