[英]Object serialization to json, certain fields only
我有一个很大的嵌套对象。 我想在JSON字符串中序列化此对象,但是我只需要包含某些字段。 这里的问题是字段可能会非常频繁地更改,我想以一种可以帮助我轻松包含或排除字段进行序列化的方式来构建它。
我知道我可以编写很多代码来提取某些字段并“手动”构建JSON。 但是我想知道是否还有其他优雅的方法可以实现类似的结果,但需要指定必填字段列表?
例如,具有以下对象结构,我想在响应中仅包含id
和name
:
class Building {
private List<Flat> flats;
}
class Flat {
private Integer id;
private Person owner;
}
class Person {
private String name;
private String surname;
}
JSON:
{
"flats" : [
{
"flat":
{
"id" : "1",
"person" : {
"name" : "John"
}
}
}
]
}
使用com.fasterxml.jackson.annotation.JsonIgnore
是实现此目的的另一种方法。
import com.fasterxml.jackson.annotation.JsonIgnore;
class Person {
private String name;
@JsonIgnore
private String surname;
}
当解析器将bean转换为json时,它将忽略surname
。 类似的注释将在其他json处理库中提供。
如果使用Gson,请研究如何使用ExclusionStrategy和JsonSerializer。
使用它们是控制序列化的一种更灵活的方法,因为它允许确定每个序列化序列化的内容。
如果需要更改要序列化的内容,则以后使用注释需要从字段中添加/删除这些注释。
对于您的示例,后者可能更合适。
这个问题可能是一个很好的起点serialize-java-object-with-gson
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.