GENSONを使用している間、継承が機能していません。以下のサンプルコード構造を見つけてください。Genson 1.4(JSON)が継承しているPojoを処理していません
これはこれはこれはこれはGENSON JSON出力である私のレスポンスオブジェクト
public class ResponseObject implements Serializable
{
private Integer errorCode;
private String errorMessage;
private Long primaryKey;
private SynBaseObject baseClass;
public ResponseObject()
{
}
public SynBaseObject getBaseObject()
{
return baseClass;
}
public void setBaseObject(SynBaseObject baseClass)
{
this.baseClass = baseClass;
}
public Integer getErrorCode()
{
return errorCode;
}
public void setErrorCode(Integer errorCode)
{
this.errorCode = errorCode;
}
}
ある
public class PhoneNumber extends SynBaseObject
{
private String countryCode;
private String areaCode;
private String localNumber;
//GettersAndSetters
}
私の子クラスである私のBaseObject
This is my BaseObject
public class SynBaseObject implements Serializable
{
private Long status;
//GettersAndSetters
}
です:
{ "baseObject":{ "ステータス":NULL} "のerrorCode":ヌル "にErrorMessage":NULL、 "主キー":ヌル}
CountryCode
、areaCode
とlocalNumber
が欠落していますJSONでは、基本クラスのみが処理されます。同じようなコードから試しました。
Genson genson = new Genson();
PhoneNumber number = new PhoneNumber();
number.setCountryCode("2");
number.setAreaCode("3");
number.setLocalNumber("9645");
ResponseObject responseObject = new ResponseObject();
responseObject.setBaseObject(number);
String serialize = genson.serialize(responseObject);
System.out.println(serialize);
出力は残りのサービスと同じです。
レスポンスありがとうございました。コードからの操作.how。私のレストサービスで.useRuntimeType(true)を設定することができます.Genson 1.4 jarを使用しているだけです。シリアライズとデシリアライゼーションはjavax.ws.rsで処理されます。 gensonライブラリを使用する –
サービスのgensonインスタンスを設定するには、http://owlike.github.io/genson/Documentation/Extensions/#jax-rs-jersey--cieのドキュメントを参照してください。あなたがそれを行う方法のコードスニペットを見ることができます。このようにhttp://stackoverflow.com/questions/38107426/what-is-a-contextresolver-and-provider-in-jersey/38112074#38112074 – eugen