resteasy を使用して安らかな Web サービスを開発しています。以前は、プロバイダーは jackson でした。
そして、結果出力は
[
{
"status": {
"id": 22,
"name": "VERIFY",
"note": ""
}
},
{
"status": {
"id": 23,
"name": "ACCEPTED",
"note": ""
}
},
{
"status": {
"id": 24,
"name": "POSTPONED",
"note": "for cancel update"
}
},
{
"status": {
"id": 29,
"name": "AMC(NEW)"
}
},
{
"status": {
"id": 30,
"name": "AMC(ASSIGNED)"
}
}
]
その後、プロバイダーとして gson に移行しました。http://eclipsesource.com/blogs/2012/11/02/integrating-gson-into-a-jax-rs-based-application/
出力は次のように変化します。
[
{
"id": 0,
"name": "DISABLE"
},
{
"id": 1,
"name": "ENABLE"
},
{
"id": 31,
"name": "REJECTED",
"note": ""
},
{
"id": 25,
"name": "ASSIGNED"
}
]
クラス定義
package com.apt.common.web.pojo;
import javax.xml.bind.annotation.XmlRootElement;
@XmlRootElement
public class Status {
Integer id;
String name;
private String note;
public Integer getId() {
return id;
}
public void setId(Integer id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String toString(){
return name;
}
@Override
public int hashCode() {
final int prime = 31;
int result = 1;
result = prime * result + ((id == null) ? 0 : id.hashCode());
return result;
}
@Override
public boolean equals(Object obj) {
if (this == obj)
return true;
if (obj == null)
return false;
if (getClass() != obj.getClass())
return false;
Status other = (Status) obj;
if (id == null) {
if (other.id != null)
return false;
} else if (!id.equals(other.id))
return false;
return true;
}
public String getNote() {
return note;
}
public void setNote(String note) {
this.note = note;
}
}
出来上がりが全然違います。
ジャクソンの使用
{
"status": {
"id": 22,
"name": "VERIFY",
"note": ""
}
}
gsonを使用して
{
"id": 0,
"name": "DISABLE"
}
gson を使用して json を生成するコードは次のとおりです。
Gson gson=new Gson();
Type fooType = new TypeToken<List<Status>>() {}.getType();
return gson.toJson(statuses,fooType);
gson を使用して同じ出力を得るにはどうすればよいですか?