简体   繁体   中英

java json error on casting

My Java code look like below:

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();
    }
}

the strUrl look like below:

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

it gives me error as below:

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

for line:

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

i was trying to read the member element of the json, but strangely get the boolean error. None of the json are using boolean, they are json object.

extra info: the code work fine on development server, but when put to production, it caused above error. Is there anything to do with the code or the library/jdk imported?

any help would be great.

hope this will help you

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);

can you please change your org.json jar file to the one in this link org.json and try again hope this will solve your problem

As "team" is a json object {}, "member" is a json array [],

You should try this

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

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM