私は 2 つの POJO クラスを持っています: AddressInformation
and PackageInformation
(以下のコードでは指定されていない getter と setter を使用)。
public class AddressInformation {
private Integer address_id;
private String street_name;
private String city;
private String state;
private Integer zipcode;
}
public class PackageInformation {
private Integer packageId;
private Integer packageType;
private Double packageWeight;
private AddressInformation packageSource;
private AddressInformation packageDestination;
}
休止状態を使用してクラスのインスタンスを永続化し、休止状態をPackageInformation
使用してデータベースからコンテンツを取得し、コンテンツを JSON 形式で返そうとしています。私はフレームワークを使用していません。
Session session = HibernateUtils.getSessionFactory().openSession();
List<PackageInformation> packagelist = null;
tx = session.beginTransaction();
packagelist = session.createQuery("FROM PackageInformation").list();
tx.commit();
session.close();
packagelist
PackageInformation のコレクションを持つ を JSON に変換したかったのです。
ここでの問題は、PackageInformation
オブジェクトに AddressInformation が埋め込まれていることです。
PackageInformation のコレクションを JSON に変換するために、以下のコードを試しました。
JSONArray json = new JSONArray();
Gson gson = new Gson();
try{
for(PackageInformation pack : packagelist){
JSONObject jsonObj = new JSONObject();
AddressInformation sourceAddress = pack.getPackageSource();
JsonElement sourceAddressJson = gson.toJsonTree(sourceAddress);
jsonObj.put("sourceAddress",sourceAddressJson);
AddressInformation destinationAddress = pack.getPackageDestination();
JsonElement destinationeAddressJson = gson.toJsonTree(destinationAddress);
jsonObj.put("destinationAddress",destinationeAddressJson);
jsonObj.put("package_id",pack.getPackageId());
jsonObj.put("package_type",pack.getPackageType());
jsonObj.put("package_weight",pack.getPackageWeight());
}
returnString = json.toString();
}catch(JSONException je){
returnString = je.toString();
}
return Response.status(200).entity(returnString).build();
sourceAddress
しかし、JSONとdestinationAddress
詳細が JSON として埋め込まれていません。代わりに、黒いフィールドが表示されました。以下の JSON のように、sourceAddress
とdestinationAddress
詳細が欠落しています。
[
{
"sourceAddress": {},
"destinationAddress: {},
"package_id": 1,
"package_type": 1,
"package_weight": 500,
}
{
"sourceAddress": {},
"destinationAddress: {},
"package_id": 2,
"package_type": 5,
"package_weight": 700,
}
]