我有类似这两个类的东西:
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;
}
以下的View类:
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需要调用存储库(也要更新用户字段),这会弄乱我的类图。
答案 0 :(得分:1)
看起来有一个名为private void dataGridView1_SizeChanged(object sender, EventArgs e)
{
foreach (DataGridViewRow row in dataGridView1.Rows)
{
row.Height = (dataGridView1.ClientRectangle.Height - dataGridView1.ColumnHeadersHeight) / dataGridView1.Rows.Count;
}
}
的注释删除了对象包装器,其中的所有属性都包含在父对象中。
希望这有帮助。