Json 到 Java 休眠实体映射的对象转换
Json to Java Object Conversion for hibernate entity mapping
我正在尝试将我的 JSONObject 对象转换为 java 对象,但仅在我的 java 对象中不断获取空值。寻求您关于如何将我的 json 值设置为 java 对象的建议,以便我可以将这些 java 对象保存在我的休眠实体中。
如果你能告诉我如何根据这个 json.[= 创建我的 java POJO 就好了14=]
下面是我的 json :
{
"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
}
这是我的 java 代码,用于将 json 字符串转换为 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数据可以映射成2类:
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_details
的 JSON 是具有动态 属性 名称的 JSON 对象,因此需要将其映射到 Java 名称-值 Map
.
根据上述 json 你需要创建 3 java classes :
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();
这将为您获取第 3 class 中可用的所有详细信息。
希望这能解决您的问题。
我正在尝试将我的 JSONObject 对象转换为 java 对象,但仅在我的 java 对象中不断获取空值。寻求您关于如何将我的 json 值设置为 java 对象的建议,以便我可以将这些 java 对象保存在我的休眠实体中。 如果你能告诉我如何根据这个 json.[= 创建我的 java POJO 就好了14=]
下面是我的 json :
{
"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
}
这是我的 java 代码,用于将 json 字符串转换为 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数据可以映射成2类:
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_details
的 JSON 是具有动态 属性 名称的 JSON 对象,因此需要将其映射到 Java 名称-值 Map
.
根据上述 json 你需要创建 3 java classes :
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();
这将为您获取第 3 class 中可用的所有详细信息。
希望这能解决您的问题。