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 中可用的所有详细信息。

希望这能解决您的问题。