1
我也有类似的这两个类的东西:春JsonView UNNEST嵌套字段
public class User {
@JsonView(UserView.IdOnly.class)
int userID;
String name;
}
public class Project {
@JsonView(ProjectView.IdOnly.class)
int projectID;
@JsonView(ProjectView.Summary.class)
// JPA annotations ommitted
User user;
}
而下面的视图类:
public class UserView extends View {}
public class ProjectView extends View {
public interface Summary extends IdOnly {}
}
public class View {
public interface IdOnly {}
}
我的控制器如下:
@JsonView(ProjectView.Summary.class)
@RequestMapping(value="/project/", method = RequestMethod.GET)
public List getProjects() {
return repository.findAll();
}
如您所见,JSON输出将userID包装在User对象中:
[
{
"projectID": 1,
"user": {
"userID": 1
}
}
]
可正常工作,我可以有我的客户使用它,但它似乎没有完成...我想摆脱“用户”包装的:
[
{
"projectID": 1,
"userID": 1
}
]
有没有办法做到这一点干净?优选地通过使用另一个注释。我还没有任何自定义序列化器,我恨不得不开始使用它们。如果这不能用JsonViews完成,是否有其他选择?
我知道一个解决方案是将一个userID字段添加到Project类,但是setter需要调用存储库(以更新用户字段),这会弄乱我的类图。
这看起来很有前途!我发现它有一个“启用”的属性,如果控制器方法用@JsonView标记,我可以将其设置为true,如果不是,则可以将其设置为false? – delucasvb
根据文档默认情况下'enabled'属性被设置为true。我认为在属性上同时拥有'@ JsonUnwrapped'和'@ JsonView'注解是一个问题 - [https://github.com/FasterXML/jackson-databind/issues/1046](https://github.com/FasterXML /杰克逊-数据绑定/问题/ 1046)。我不得不进一步挖掘。这真的很有趣! –