我有一个POJO类,它将从JSON反序列化,JSON在Spring中作为请求体出现。此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;
}
}
如果您使用Lombok,请考虑添加此注释@Data
,如下所示:
@Data //You can remove the @Getter and @Setter annotation since @Data includes them
@NoArgsConstructor
public class BookDto {
private String bookName;
private List<String> authors;
private String description;
}
注意:这与问题无关,但请删除此注释,因为JSON对象的属性与DTO的属性具有相同的名称,并且默认情况下,ObjectMapper使用这些名称来映射属性,因此此注释在您的情况下是无用的。
编辑:@Request estbody
为您反序列化JSON,因此您无需手动执行。
使字段公共
或添加getter以使它们能够反序列化
参考此了解更多详情
有人能帮助我,我如何反序列化下面的JSON,我不能改变?我正在使用Jackson进行序列化。 列可以具有未知数量的标题及其值,例如,“Header1”用于行数组中。 到目前为止,我有以下结构: 问题是当我反序列化成QueryResult时映射是空的;我了解TypeReference,但不知道如何指定TypeReference 编辑: 我的对象映射器代码如下: queryResultString的内
我有一个JSON字符串,它将空列表标记为而不是。因此,例如,如果我有一个没有子对象的对象,我将收到这样的字符串: 我想将其反序列化为父类,将子类正确设置为子类的空列表。 对于上面的JSON字符串,我想要一个将其id设置为13的对象,并将子元素设置为新的ArrayList 我知道如何为整个类使用注释 然后呢 但是,我想解决从字符串正确实例化列表的一般问题: 我能得到这样的东西吗?
问题内容: 使用Jackson 2,我正在寻找一种 通用的 方式将对象序列化为单个值(然后序列化它们,然后再填充该单个字段),而不必重复创建JsonSerializer / JsonDeserializer来处理每种情况。@JsonIdentityInfo批注非常接近,但由于我知道,它将始终对完整的子对象进行序列化,因此略微遗漏了该标记。 这是我想做的一个例子。给定的类: 我希望Order可以序列
问题内容: 使用Jackson XmlMapper注释,如何将XML反序列化为pojo? 我试图使用这样的东西: 当我尝试使用XmlMapper的readValue()时,出现以下错误: 问题答案: 您的课程与您的课程不符。结构比您想象的要简单。请参见以下示例: 简单用法: 上面的程序打印(适用于您): 也可以看看: jackson-dataformat-xml。 主页:Jackson XML d
我有一个带有lombok注释的POJO,我的JSON通过Jackson将它反序列化,如下所示: 当jackson试图反序列化仅列出一个响应时 缺少什么来确保所有属性要么包含反序列化JSON中的相应值,要么包含默认分配值的空列表? -更新-这不是问题,直到我从Spring 1.3.5升级到1.4.2,这也将我的Jackson版本从2.6.6升级到2.8.4