Как читать эту форму JSON - PullRequest
0 голосов
/ 10 июля 2019

Ранее я интегрировал сторонний REST API. Его ответ раньше был правильным JSON, который я позже связывал с моим объектом с помощью googles GSON. Работало нормально.

Предыдущий JSON

{
    "status": 1,
    "msg": "1 out of 1 Transactions Fetched Successfully",
    "transaction_details": {
        "123": {
            "mihpayid": "123",


"request_id": null,
        "bank_ref_num": null,
        "amt": "66.00",
        "transaction_amount": "66.00",
        "txnid": "123",
        "additional_charges": "0.00",
        "productinfo": "Payment Gateway",
        "firstname": "TESTING",
        "bankcode": "asdf",
        "udf1": null,
        "udf3": null,
        "udf4": null,
        "udf5": null,
        "field2": null,
        "field9": null,
        "error_code": null,
        "addedon": "2019-05-24 12:05:07",
        "payment_source": "asdf",
        "card_type": null,
        "error_Message": "",
        "net_amount_debit": "0.00",
        "disc": "0.00",
        "mode": "NB",
        "PG_TYPE": "ASDF",
        "card_no": "",
        "udf2": null,
        "status": "pending",
        "unmappedstatus": "in progress",
        "Merchant_UTR": null,
        "Settled_At": null
    }
}

}

Однако в последнее время вместо JSON API возвращает следующий ответ.

Новый JSON

a:3:{s:6:"status";i:1;s:3:"msg";s:44:"1 out of 1 Transactions Fetched Successfully";s:19:"transaction_details";a:1:{i:123465;a:31:{s:8:"somid";s:10:"1234";s:10:"request_id";s:0:"";s:12:"bank_ref_num";s:10:"125678";s:3:"amt";s:4:"1.00";s:18:"transaction_amount";s:4:"1.00";s:5:"txnid";s:19:"123456";s:18:"additional_charges";s:4:"0.00";s:11:"productinfo";s:15:"Payment Gateway";s:9:"firstname";s:8:"TESTING";s:8:"bankcode";s:4:"INDB";s:4:"udf1";N;s:4:"udf3";N;s:4:"udf4";N;s:4:"udf5";N;s:6:"field2";N;s:6:"field9";N;s:10:"error_code";s:4:"E000";s:7:"addedon";s:19:"2019-07-10 11:08:04";s:14:"payment_source";s:4:"payMe";s:9:"card_type";N;s:13:"error_Message";s:8:"NO ERROR";s:16:"net_amount_debit";d:1;s:4:"disc";s:4:"0.00";s:4:"mode";s:2:"NB";s:7:"PG_TYPE";s:7:"INDB_NB";s:7:"card_no";s:0:"";s:4:"udf2";N;s:6:"status";s:7:"success";s:14:"unmappedstatus";s:8:"captured";s:12:"Merchant_UTR";N;s:10:"Settled_At";s:19:"0000-00-00 00:00:00";}}}

Кто-нибудь знает, как связать его с Java-объектом

Ответы [ 2 ]

1 голос
/ 10 июля 2019

Ответ представляет собой сериализованную строку php

Попробуйте использовать этот serialized-php-parser

https://code.google.com/archive/p/serialized-php-parser/downloads

или любой другой php-парсер

0 голосов
/ 10 июля 2019

Если вы хотите преобразовать объекты JSON в объекты Java, вам необходимо сначала отобразить их.Создайте класс, содержащий все необходимые переменные, сгенерируйте методы получения и установки, а также любые дополнительные методы, которые вам могут понадобиться.Теперь, чтобы фактически преобразовать эти объекты JSON в Java, я рекомендую вам использовать библиотеку Jackson .

Вот как его включить, если вы используете Maven:

<dependency>
    <groupId>com.fasterxml.jackson.core</groupId>
    <artifactId>jackson-databind</artifactId>
    <version>2.9.8</version>
</dependency>

После того, как вы включили библиотеку в ваш проект, перейдите к основному методу программы и объявите ObjectMapper object.

ObjectMapper mapper = new ObjectMapper();

И наконец:

try {
    YourObject obj = mapper.readValue(new File("YOUR_FILE_PATH"), YourObject.class);
} catch (IOException ex) {
    ex.printStackTrace();
}

Если вы получите этот ответ в виде строки, вы также можете сделать это:

try {
    String myJson = "YOUR_JSON_VALUE";
    YourObject obj2 = mapper.readValue(myJson, YourObject.class);
} catch (IOException ex) {
    ex.printStackTrace();
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...