Teddybugs
Teddybugs

Reputation: 1244

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.

Upvotes: 0

Views: 1060

Answers (2)

Gokul raj
Gokul raj

Reputation: 53

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

Upvotes: 1

Panup Pong
Panup Pong

Reputation: 1891

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

You should try this

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

Upvotes: 0

Related Questions