简体   繁体   English

用于休眠实体映射的 Json 到 Java 对象转换

[英]Json to Java Object Conversion for hibernate entity mapping

I am trying to convert my JSONObject object into java objects but continuously getting null values only in my java object.我试图将我的 JSONObject 对象转换为 java 对象,但只在我的 java 对象中不断获取空值。 Seeking your suggestions that how can i set my json values as java object so that i can save those java objects in my hibernate entities.寻求您的建议,我如何将我的 json 值设置为 java 对象,以便我可以将这些 java 对象保存在我的休眠实体中。 It would be greate if you could tell me how to create my java POJO according to this json.如果您能告诉我如何根据此 json 创建我的 java POJO,那就太好了。

Below is my json :下面是我的 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
}

Here is my java code to convert json String into java objects:这是我将 json String 转换为 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());

As per the above json you need to create 3 java classes :根据上面的 json,您需要创建 3 个 java 类:

class1 1级

private String status;
private String msg;
private Class2 transactionDetails;

Class2 2级

private Class3 transactionparameters;

Class3 3级

public String firstname;
public String transaction_amount;
public String amt;
public String Settled_At;
public String addedon;
     etc etc

Now for accessing the objects you can use现在访问您可以使用的对象

class1_Object.getTransactionDetails().getTransactionparameters(); class1_Object.getTransactionDetails().getTransactionparameters();

this will fetch you all the details available in 3rd class.这将为您获取第三堂课中可用的所有详细信息。

I hope this will resolve your problem.我希望这能解决您的问题。

That JSON data can be mapped into 2 classes: 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
}

Remember, JSON properties are unordered, so you can order the fields in a way that makes more sense.请记住,JSON 属性是无序的,因此您可以以更有意义的方式对字段进行排序。

The JSON for transaction_details is a JSON object with dynamic property name, so it needs to be mapped into a Java name-to-value Map . transaction_details的 JSON 是一个具有动态属性名称的 JSON 对象,因此需要将其映射到 Java 名称到值的Map

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM