将POJO转换为JSON



我有一个POJO。

@Data
@AllArgsConstructor
@Builder
public class Emp {
private String position;
private String name;
}
假设我们创建了一个对象
Emp emp = new Emp("Manager", "Bob");

我如何将其转换为列表并将其保存在JSON格式的数据库中?

数据应按以下格式存储在数据库中:

{
list:[
{
position: Manager
name: Bob
}
]
}

有没有现成的解决方案?

我将一个对象转换为一个列表,然后对它调用。tostring()方法:

Collections.singletonList(emp);

但是当我将它存储在数据库中时,下一次保存将进入数据库:

[Emp(position=Manager, name=Bob)]

但是我需要以不同的方式存储记录

我如何将其转换为列表并将其保存在JSON数据库中格式吗?

数据应按以下格式存储在数据库中:

{
"list": [
{
"position": "Manager"
"name": "Bob"
}
]
}

因为序列化的JSON需要有一个属性"list",所以你不能简单地序列化List。

相反,你可以定义一个POJO来包装这个列表。

这就是它可能看起来的样子(我把它改成通用的,以便使它适合序列化任何类型的列表):

@Data
@AllArgsConstructor
public static class ListWrapper<T> {
private List<T> list;
}

这就是如何使用Jackson的ObjectMapperObjectWriter来序列化它:

List<Emp> emps = List.of(new Emp("Manager", "Bob"));
ListWrapper<Emp> listWrapper = new ListWrapper<>(emps);

ObjectMapper mapper = new ObjectMapper();
ObjectWriter writer = mapper.writerWithDefaultPrettyPrinter();

String json = writer.writeValueAsString(listWrapper);
System.out.println(json);

输出:

{
"list" : [ {
"name" : "Manager",
"position" : "Bob"
} ]
}

如果您需要将对象列表作为JSON存储在DB中,那么您需要使用JacksonObjectMapper将对象列表转换为JSON字符串。将转换后的字符串存储到DB。

最新更新