运行时的部分 JSON 序列化(用于 RESTful 查询)
我正在尝试在Tomcat中将Java对象转换为JSON(目前使用Jackson)。根据 RESTful 请求中的字段,我只想序列化这些字段。我想支持对字段的任何子集的请求,因此我想在运行时(动态)执行此操作。
例如,假设我想支持 User 对象的部分序列化:
class User {
private final String id;
private final String firstName;
private final String lastName;
public User(String id, String firstName, String lastName) {
this.id = id;
this.firstName = firstName;
this.lastName = lastName;
}
public String getId() { return id; }
public String getFirstName() { return firstName; }
public String getLastName() { return lastName; }
}
如果我提出以下要求:
GET /users/{id}/?fields=firstName,lastName
我想得到类似的东西。{"firstName":"Jack","lastName":"Johnson"}
如果我提出以下要求:
GET /users/{id}/?fields=firstName
我想得到类似的东西。{"firstName":"Jack"}
Jackson 的 JSON 视图能够定义逻辑属性的子集(通过 getter 或字段访问的内容)以进行序列化。但是,它们是静态定义的(使用批注),并且仅动态选择(每个序列化)。在实践中,我希望支持请求对象字段的任何子集,因此我可能拥有数千个JSON视图(10个字段意味着1,023个子集!
哪些 JSON 库支持运行时的部分序列化?