Невозможно проанализировать JSON, отображается сообщение об ошибке "JSONObject [" other "] not found" - PullRequest
0 голосов
/ 05 сентября 2018

Ниже приведен фрагмент кода для утилиты, которую я использовал для извлечения данных. Ниже приведен пример JSON, в котором мне нужно получить значение Other / Vehicle / Properties, но я получаю сообщение об ошибке.

Подскажите, пожалуйста, что мне нужно добавить в утилиту? Мне нужно получить значение Other / Vehicle / Properties. Пожалуйста, предложите, что мне нужно изменить в Утилите, чтобы вложенное свойство также выбиралось из JSON.

public class TestUtil {

    public static JSONObject responsejson;

    public static String getValueByJPath(JSONObject responsejson, String jpath){
        Object obj = responsejson;
        for(String s : jpath.split("/")) 
            if(!s.isEmpty()) 
                if(!(s.contains("[") || s.contains("]")))
                    obj = ((JSONObject) obj).get(s);
                else if(s.contains("[") || s.contains("]"))
                    obj = ((JSONArray) ((JSONObject) obj).get(s.split("\\[")[0])).get(Integer.parseInt(s.split("\\[")[1].replace("]", "")));
        return obj.toString();
    }       
}

JSON Формат:

    {
                "coverageEndDate": "02/28/2019",
                "coverageStartDate": "03/01/2018",
                "coverageType": "Personal",
                "error": {
                    "code": 0,
                    "message": ""
                },
                "firstName": "Ronnie",
                "insuredItems": {
                    "other": [{
                        "coverageEndDate": "02/28/2019",
                        "coverageStartDate": "03/01/2018",
                        "description": "Hunter Marin Passage 450",
                        "id": 14
                    }],
                    "properties": [{
                        "address": "31 LAKEWOOD RD, WEST BEND, WI 53090",
                        "coverageEndDate": "02/28/2019",
                        "coverageStartDate": "03/01/2018",
                        "deductible": 5000,
                        "description": "31 LAKEWOOD RD, WEST BEND, WI 53090",
                        "id": "113",
                        "limit": 2000000
                    }],
                    "vehicles": [{
                        "coverageEndDate": "02/28/2019",
                        "coverageStartDate": "03/01/2018",
                        "deductible": "$500 Comprehensive\n$500 Collision",
                        "description": "2016 Ford Explorer",
                        "id": "126",
                        "limit": "$100,000",
                        "make": "FORD",
                        "model": "EXPLORER",
                        "transportationExpense": "$30 per day and $900 max",
                        "vin": "1G1FA1E38F2131121",
                        "year": 2016
                    }, {
                        "coverageEndDate": "02/28/2019",
                        "coverageStartDate": "06/18/2018",
                        "deductible": "$500 Comprehensive\n$500 Collision",
                        "description": "2017 Dodg Durango",
                        "id": "127",
                        "limit": "$100,000",
                        "make": "DODG",
                        "model": "DURANGO",
                        "transportationExpense": "$30 per day and $900 max",
                        "vin": "2G1XER366DE4DE3H5",
                        "year": 2007
                    }]
                },
                "lastName": "James Dio",enter code here
                "policyNumber": "5519930"
            }

1 Ответ

0 голосов
/ 05 сентября 2018

Использовать обычный парсер из библиотеки Джексона в этом примере

...