基本的に、あるサーバーで JSON にマーシャリングしてから、それを別のサーバーに送信し、アンマーシャリングする必要があります。リスト ラッパーと呼ばれる応答オブジェクトを使用して、エラーが発生した場合にそれらを渡すことができるようにします。バッジャーフィッシュ (jettison) によって以下の RESTEasy クラスでマーシャリングされた JSON を使用して、他のサーバーに返されると、GSON は listwrapper オブジェクトにアンマーシャリングしますが、内部のリストは null です。何か案は?注: リストには一度に 1 つのタイプしか含まれませんが、異なるオブジェクトがリストに入る可能性があるため、リストは汎用的なままにする必要があります。
ジェイソン
アンマーシャリング
GsonBuilder builder = new GsonBuilder();
Gson gson = builder.create();
Object List;
if (!JSON.equals("")) {
List = gson.fromJson(new BufferedReader(new StringReader(JSON)), ListWrapper.class);
}
リストラッパータイプ
@XmlRootElement(name = "ListWrapper")
public class ListWrapper {
private Vector<Object> objects;
private String status;
private int batch;
private ValidationException e;
public ListWrapper() {
this.setStatus("Success");
}
public ListWrapper(Vector<Object> list) {
this.setStatus("Success");
this.objects = list;
}
public ListWrapper(int x) {
this.setStatus("batch");
this.batch = x;
}
public Vector<Object> getList() {
return objects;
}
public void setList(Vector<Object> object) {
this.objects = object;
}
public String getStatus() {
return status;
}
public void setStatus(String status) {
this.status = status;
}
@XmlJavaTypeAdapter(ThrowableAdapter.class)
public ValidationException getE() {
if (e != null) {
return e;
} else {
return null;
}
}
public void setE(ValidationException x) {
this.e = x;
}
public int getBatch() {
return batch;
}
public void setBatch(int batch) {
this.batch = batch;
}
}