【发布时间】:2018-09-15 13:46:45
【问题描述】:
我有一个 POJO 类,它将从 JSON 反序列化,在 Spring 中以 RequestBody 出现。这个 POJO 类包含 List<String> 作为实例变量。当这个变量被反序列化时,值为null。如何正确反序列化它?以下是代码示例
我的 POJO 如下所示
@Getter
@AllArgsConstructor
@NoArgsConstructor
public class BookDto {
@JsonProperty("bookName")
private String bookName;
@JsonProperty("authors")
private List<String> authors;
@JsonProperty("description")
private String description;
}
我的 JSON 对象如下所示
{
"bookName":"Vagrant Up and Running",
"authors":["aone", "atwo"],
"description":"Getting started guide for Vagrant development"
}
下面是示例方法调用
public void method(@RequestBody BookDto bookDto) {}
我遵循了给出的建议,下面给出了反序列化代码
public class AuthorDeserializer extends JsonDeserializer<List<String>> {
@Override
public List<String> deserialize(JsonParser jsonParser, DeserializationContext deserializationContext) throws IOException, JsonProcessingException {
Author author = jsonParser.readValueAs(Author.class);
return author.authors;
}
private static class Author {
public List<String> authors;
}
}
【问题讨论】:
-
这不可能是您的真实代码:所有字段都是私有的,无法获取它们的值。发布您的实际代码。
-
我已经为 getter 和构造函数使用了 lombok 插件
-
发布您的实际代码。
-
@Madhusudhanan 你是如何反序列化它的?请张贴代码
-
我无法重现(虽然我没有使用Lombok,但只是生成了它应该根据注释生成的代码)。检查您的输入。确保那里没有错字。尝试编写一个仅反序列化 JSON 的单元测试。
标签: java json spring collections jackson