Search code examples
javajsonjson-simple

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.


Solution

  • 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