Преобразование объектов Json в Java для отображения спящего объекта - PullRequest
0 голосов
/ 26 октября 2018

Я пытаюсь преобразовать мой объект JSONObject в объекты Java, но постоянно получаю нулевые значения только в моем объекте Java.Поищите ваши предложения о том, как я могу установить свои значения json как объект java, чтобы я мог сохранить эти объекты java в моих спящих объектах. Было бы здорово, если бы вы могли рассказать мне, как создать мой Java POJO в соответствии с этим 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
}

Вот мой код Java для преобразования json String в объекты 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());

Ответы [ 3 ]

0 голосов
/ 26 октября 2018

Вы можете использовать Direct JSON Mapping для Hibernate pojo https://vladmihalcea.com/how-to-map-json-objects-using-generic-hibernate-types/

0 голосов
/ 29 октября 2018

В соответствии с вышеуказанным 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 ();

это принесет вам все детали, доступные в 3-м классе.

Я надеюсь, что это решит вашу проблему.

0 голосов
/ 26 октября 2018

Эти данные 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 неупорядочены, поэтому вы можете упорядочить поля таким образом, чтобы это имело больший смысл.

JSON для transaction_details - это объект JSON с динамическим именем свойства, поэтому его необходимо сопоставить с именем-значением Java Map.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...