我有两个POJO类:
我希望将包含PackageInformation集合的packagelist转换为JSON。
这里的问题在于PackageInformation对象嵌入了AddressInformation。
我尝试使用以下代码将PackageInformation集合转换为JSON:
AddressInformation
和PackageInformation
(下面的代码中未指定它们的getters和setters)。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;
}
我正在使用Hibernate来持久化类的实例,并尝试使用Hibernate从数据库中检索PackageInformation
的内容并以JSON格式返回内容。我没有使用任何框架。
Session session = HibernateUtils.getSessionFactory().openSession();
List<PackageInformation> packagelist = null;
tx = session.beginTransaction();
packagelist = session.createQuery("FROM PackageInformation").list();
tx.commit();
session.close();
我希望将包含PackageInformation集合的packagelist转换为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
和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,
}
]