![](/img/trans.png)
[英]Convert serialized JSON string to JSON object in java
[英]JSON object mapper: avoid listing derived class in serialized JSON string
这是我的课程结构:
public class Business {
public long id;
public List<Employee> employees;
// constructors, getters, setters
}
public class BusinessParcelable extends Business implements Parcelable {
// some functions, not additional fields
}
public class Employee {
// fields, constructor, getters, setters
}
public class EmployeeParcelable extends Employee implements Parcelable {
// some functions, no additional fields
}
如果我使用以下代码将其序列化为JSON字符串:
someFunction(BusinessParcelable b) {
ObjectMapper objectMapper = new ObjectMapper();
Business base = (Business)b;
String jsonString = objectMapper.writeValueAsString(base);
}
jsonString看起来像:
{
"id": 15,
"employees": [
{
...
}
],
"employeesParcelable": [
{
...
}
]
}
我不希望在我的JSON字符串中重复employee和employeeParcelable。 我可以通过替换来解决:
Business base = (Business)b;
附:
Business base = new Business();
base.setXXX(b.getXXX());
base.setYYY(b.getYYY());
base.setZZZ(b.getZZZ());
但是我想避免这种深层复制,因为我的类结构具有很多字段并且深层多个。 杰克逊中是否有办法避免重复基本列表和派生列表(通过一些简单的注释)?
编辑:我只是能够使用Google Gson获得所需的结果:
Gson gson = new Gson();
String jsonUsingGson = gson.toJson(base);
不过,仍然知道如何使用杰克逊获得相同的结果仍然是很好的。
我认为您的Parcelable
接口包含getEmployeesParcelable
方法。 默认情况下, Jackson
序列化所有吸气剂。 为了避免这种情况,您可以通过以下方式注释方法:
interface Parcelable {
@JsonIgnore
List<Employee> getEmployeesParcelable();
//other methods
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.