我正在努力研究如何构建我的JSON对象以最好地遵守http://jsonapi.org/format/
如果我使用以下课程:
页面(主要对象)
public class Page {
@Id
@ObjectId
private String id; //Used for mongodb
@JsonProperty
private String type;
@JsonProperty
private Attribute attributes;
@JsonProperty
private Meta meta;
public Page() {
// Jackson deserialization
}
// Getters and setters
}
属性(嵌入页面)
public class Attribute {
@JsonProperty
private Date created = new Date();
@JsonProperty
private String title;
@JsonProperty
private String body;
public Attribute() {
// Jackson deserialization
}
public Attribute(Date created, String title, String body) {
this.created = created;
this.title = title;
this.body = body;
}
// Getters and setters
}
Meta(嵌入页面)
public class Meta {
@JsonProperty
private List<String> authors;
public Meta() {
}
public Meta(List<String> authors) {
this.authors = authors;
}
// Getters and setters
}
我可以使用以下帖子创建此对象:
{
"type": "page",
"attributes": {
"title": "This is the title",
"body": "<p>This is a long section of html, other stuff</p>"
},
"meta": {
"authors": [
"Steve",
"John",
"Sam"
]
}
}
创建生成的JSON对象:
{
id:"56cbed5036f66b05dc2df841",
type:"page",
attributes:{
created:1456205138886,
title:"This is the title",
body:"<p>This is a long section of html, other stuff</p>"
},
meta:{
authors:[
"Steve",
"John",
"Sam"
]
}
}
问题: 以我创建嵌套JSON对象的最佳/正确方式创建多个类,我是否应该尝试将所有内容包装在“data:”中,根据上面的链接,状态是必须的?如果是这种情况,我应该创建一个名为Data的POJO,它包含Page对象吗?
在寻找有关此类事物的信息时,我似乎能够找到的是人们如何将JSON反序列化为POJO,这不是我想要的。
真的想在这里找到一些编写API的最佳实践。
答案 0 :(得分:0)
您应该从对象公开的“行为”以及您希望API公开的方式开始。 虽然没有银弹,但有大量的文献可以指导您如何建模API(以及您的对象)的正确方向
这里有几个链接:
就个人而言,而且 - 在一般情况下 - 我创建了POJO,但同样@ cricket_007也提到了它的意见。
HTH。