java json ошибка при кастинге - PullRequest
0 голосов
/ 21 мая 2018

Мой код Java выглядит следующим образом:

import org.json.simple.JSONArray;
import org.json.simple.JSONObject;
import org.json.simple.parser.JSONParser;
String jsonMember = strUrl;
String strMember = readUrl(jsonMember);

if (!Validator.isEmpty(strMember)) {
    Object obj = parser.parse(strMember);
    JSONObject jo = (JSONObject) obj;
    JSONArray jsonArrayMember = (JSONArray) jo.get("member");
    for (int j = 0; j < jsonArrayMember.size(); j++) {
        JSONObject memberObj = (JSONObject) jsonArrayMember.get(j);
        String name = memberObj.get("name").toString();
        String age = memberObj.get("age").toString();
    }
}

strUrl выглядит следующим образом:

{
    "team": {
        "team_id": "2",
        "team_name": "volcanoe"
    },
    "member": [
        {
            "name": "Samantha",
            "age": "20"
        }
    ]
}

выдает ошибку, как показано ниже:

java.lang.ClassCastException: java.lang.Boolean cannot be cast to org.json.simple.JSONArray

для строки:

JSONArray jsonArrayMember = (JSONArray) jo.get("member");

Я пытался прочитать элемент member json, но странным образом получил логическую ошибку.Ни один из json не использует логические значения, они являются объектами json.

дополнительная информация: код отлично работает на сервере разработки, но при запуске в производство он вызвал вышеуказанную ошибку.Есть ли что-нибудь связанное с кодом или импортированной библиотекой / jdk?

любая помощь будет отличной.

Ответы [ 2 ]

0 голосов
/ 21 мая 2018

надеюсь, что это поможет вам

String jsonString="{\"team\": {\"team_id\": \"2\",\"team_name\": \"volcanoe\"},\"member\": [{\"name\": \"Samantha\",\"age\": \"20\"}]}";

JSONObject jsonObject = new JSONObject(jsonString);

JSONArray jsonArrayMember=jsonObject.getJSONArray("member");

System.out.println(jsonArrayMember);

Вы можете изменить файл jar org.json на этот по этой ссылке org.json и попробовать еще раз, надеюсь, это решит вашу проблемупроблема

0 голосов
/ 21 мая 2018

Поскольку "team" - это объект json {}, "member" - это массив json [],

Вы должны попробовать это

JSONArray jsonArrayMember = jo.getJSONArray("member");
...