hibernate实体映射的Json到Java对象转换
我试图将我的JSONObject对象转换为java对象,但只在java对象中不断获得空值。寻求您的建议,如何将json值设置为java对象,以便将这些java对象保存在hibernate实体中。 如果您能告诉我如何根据此json创建java POJO,那就太好了。 下面是我的json:hibernate实体映射的Json到Java对象转换,java,json,spring-mvc,hibernate-mapping,jackson-databind,Java,Json,Spring Mvc,Hibernate Mapping,Jackson Databind,我试图将我的JSONObject对象转换为java对象,但只在java对象中不断获得空值。寻求您的建议,如何将json值设置为java对象,以便将这些java对象保存在hibernate实体中。 如果您能告诉我如何根据此json创建java POJO,那就太好了。 下面是我的json: { "msg": "1 out of 1 Transactions Fetched Successfully", "transaction_details": { "148042": {
{
"msg": "1 out of 1 Transactions Fetched Successfully",
"transaction_details": {
"148042": {
"firstname": "Navneet",
"transaction_amount": "11.00",
"amt": "11.00",
"Settled_At": "0000-00-00 00:00:00",
"addedon": "2018-09-26 20:36:25",
"mode": "CC",
"card_no": "512345XXXXXX2346",
"additional_charges": "0.00",
"error_Message": "NO ERROR",
"payment_source": "payu",
"bank_ref_num": "368960",
"bankcode": "CC",
"txnid": "148042",
"unmappedstatus": "captured",
"udf5": null,
"mihpayid": "40399371551645689",
"udf3": null,
"udf4": null,
"net_amount_debit": 11,
"udf1": null,
"card_type": "MAST",
"udf2": null,
"Merchant_UTR": null,
"field9": " Verification of Secure Hash Failed: E700 -- Approved -- Transaction Successful -- Unable to be determined--E000",
"error_code": "E000",
"disc": "0.00",
"productinfo": "Health",
"request_id": "",
"field2": "178707",
"PG_TYPE": "AXISPG",
"name_on_card": "Mukesh",
"status": "success"
}
},
"status": 1
}
以下是我将json字符串转换为java对象的java代码:
if(response.getStatusCode().toString().equalsIgnoreCase("200")){
String responseString = response.getBody();
JSONObject responseJson = new JSONObject(responseString);
output=new com.google.gson.Gson().toJson(responseJson);
ObjectMapper objectMapper = new ObjectMapper();
objectMapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false);
PayUTransactionMap payutxnmap=objectMapper.readValue(responseString, PayUTransactionMap.class);
PayUTransactionMap obj = new Gson().fromJson(output, PayUTransactionMap.class);
transaction.setPgBankRefNo(payutxnmap.getBank_ref_num());
transaction.setPgTxnRefNo(payutxnmap.getMihpayid());
transaction.setPgTxnNo(payutxnmap.getBank_ref_num());
transaction.setTxnMode(payutxnmap.getBankcode());
JSON数据可以映射到两个类:
class Root {
int status;
String msg;
Map<String, Detail> transaction_details;
}
class Detail {
String firstname;
String name_on_card;
BigDecimal amt;
// and many more
}
类根目录{
智力状态;
串味精;
地图交易详情;
}
课堂细节{
字符串名;
卡片上的字符串名称;
大十进制金额;
//还有更多
}
请记住,JSON属性是无序的,因此您可以以更有意义的方式对字段进行排序
transaction\u details
的JSON是一个具有动态属性名称的JSON对象,因此需要将其映射到Java名称中,以值Map
,根据上述JSON,您需要创建3个Java类:
class1
private String status;
private String msg;
private Class2 transactionDetails;
Class2
private Class3 transactionparameters;
Class3
public String firstname;
public String transaction_amount;
public String amt;
public String Settled_At;
public String addedon;
etc etc
现在,访问您可以使用的对象
class1_Object.getTransactionDetails().getTransactionparameters()
这将为您获取第三类中可用的所有详细信息
我希望这能解决你的问题 你能分享你想要这个JSON设置为Hi Andreas的java类吗?我已经尝试过你的方法,但是由于这个架构,我无法完成这个JSON的java POJO。你能发布针对这种json架构的java POJO吗?这样我就可以检查我在java对象中是否得到了值。@nirmalsharma这些是你的json的java POJO。