【发布时间】:2021-07-14 05:53:22
【问题描述】:
我有 JSON 序列化和反序列化是在 java 中使用 Jackson 完成的。 我有很多 JSON 字段要序列化和反序列化我有多个单成员类,有没有更好的方法来做到这一点?
我对使用 Jackson 库没有任何限制,这是我在大多数情况下都使用的库。
public class Data{
public String type;
public int id;
public Attributes attributes;
public Relationships relationships;
}
public class Category{
public Data data;
}
public class Service{
public Data data;
}
public class Priority{
public Data data;
}
public class Status{
public Data data;
}
public class User{
public Data data;
}
public class Relationships{
public Category category;
public Service service;
public Priority priority;
public Status status;
public User user;
}
public class Root{
public Data data;
}
我正在序列化的 JSON 示例如下所示。
{
"data": {
"id": 111,
"type": "op type",
"attributes": {
"title": "Some title"
},
"relationships": {
"category": {
"data": {
"type": "category",
"id": 1
}
},
"service": {
"data": {
"type": "service",
"id": 3
}
},
"priority": {
"data": {
"type": "priority",
"id": 1
}
},
"status": {
"data": {
"type": "status",
"id": 3
}
},
"user": {
"data": {
"type": "user",
"id": 3
}
}
}
}
}
【问题讨论】:
-
见stackoverflow.com/questions/1957406/… - 不要手动创建类!自动生成的代码是带有数据类的标准过程
-
@MartinFrank 感谢您的建议,我不手动创建类,我使用 jsonschema2pojo,但是将它们作为依赖项导入对我没有帮助,我需要创建用于序列化的对象。
-
您也可以使用
JsonNode或Map反序列化到/从json 字符串 -
@pratap 感谢您的建议,但 Jackson 对象映射器似乎是一种更清洁的方式,当然可以争论,但是一旦我使用 JSONNode 它必须在一些局部变量中捕获,并且将所有 JSON 字段作为局部变量传递并不容易。最后,我们来创建对象,我觉得 Jackson 对象映射器更好
-
是的,我同意创建对象映射器比 JsonNode 或 Map 更简洁。但就像你说的,你需要创建很多类。也许您可以尝试创建内部类。但它不会减少课程的数量。