我有一个Java应用程序,它使用Accept头来返回XML或Json,具体取决于客户端请求(到RESTful API)。我们注意到虽然XML正在回归,但我们希望json有点奇怪。抱歉,这有点令人费解,但我试图添加所有相关的例子和代码/注释。任何有助于理解json返回原因的帮助都会非常感激。
所以xml是
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<organisation id="6430D28827FD" href="http://domain.com:80/app/api/organisations/6430D28827FD" created="2014-07-11T11:36:37+01:00">
**<links>
<link href="http://domain.com:80/app/api/orders/E24B07A4" rel="ORDER"/>
<link href="http://domain.com:80/app/api/orders/FA423645" rel="ORDER"/>
...
</links>**
<name>Acme Ltd</name>
当输出是在json但我们得到
{
**"links": {
"link": [
{
"href": "http://domain.com:80/app/api/orders/E24B07A4",
"rel": "ORDER",
"otherAttributes": {}
},
{
"href": "http://domain.com:80/app/api/orders/FA423645",
"rel": "ORDER",
"otherAttributes": {}
},
...
]**
},
"id": "6430D28827FD",
"href": "http://domain.com:80/app/api/organisations/6430D28827FD",
"created": 1405074997000,
"name": "Acme Ltd",
}
}
我们(想想我们!)希望看到
"links": { [
{
"href": "http://domain.com:80/app/api/orders/E24B07A4",
"rel": "ORDER",
"otherAttributes": {}
},
{
"href": "http://domain.com:80/app/api/orders/FA423645",
"rel": "ORDER",
"otherAttributes": {}
},
...
]
}
有没有办法做到这一点(或者我们错过了关于如何构建json的观点?)
代码如下
@XmlRootElement(name = "organisations")
@XmlAccessorType(value = XmlAccessType.PROPERTY)
public class OrganisationsBean {
@XmlElement(name = "organisation")
private List<OrganisationBean> organisations;
private OrganisationsBean() {
}
public OrganisationsBean(List<OrganisationBean> organisations) {
this.organisations = organisations;
}
public List<OrganisationBean> getOrganisations() {
return organisations;
}
}
@XmlType(name = "organisation", propOrder = {"name", …
public class OrganisationBean extends ResourceBean {
private String name;
public OrganisationBean() {}
public static OrganisationBean create(String organisationId, String organisationName, HttpServletRequest request) {
OrganisationBean organisationBean = new OrganisationBean(organisationId);
organisationBean.setName(organisationName);
…
return organisationBean;
}
}
public class Organisation {
private String id;
private String name;
private List<OrderSummary> orderSummaries;
…
public Organisation(String id, String name) {
this.id = id;
this.name = name;
}
public void setOrderSummaries(List<OrderSummary> orderSummaries) {
this.orderSummaries = orderSummaries ;
}
public List<OrderSummary> getOrderSummaries() {
return orderSummaries ;
}
}
@XmlAccessorType(XmlAccessType.FIELD)
@XmlType(name = "links", propOrder = {"link"})
public class Links {
protected List<Link> link;
public List<Link> getLink() {
if (link == null) {
link = new ArrayList<Link>();
}
return this.link;
}
}