hibernate实体映射的Json到Java对象转换

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": {

我试图将我的JSONObject对象转换为java对象,但只在java对象中不断获得空值。寻求您的建议,如何将json值设置为java对象,以便将这些java对象保存在hibernate实体中。 如果您能告诉我如何根据此json创建java POJO,那就太好了。

下面是我的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
}
以下是我将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。