Nidheesh
Nidheesh

Reputation: 4562

Process JSONObject to get the items

This code:

JSONObject jsonObj= JSONObject.fromString(request.getParameter("parameter"));
System.out.println(jsonObj.getString("dList"));

Gave me a string:

["ABC","CGR","DRR"]

How to process this to get the values? Tried getting as JSONArray like,

JSONArray arr= jsonObj.getJSONArray("dList");

But showing the following error.

JSONObject["dList"] is not a JSONArray.

Here is the raw data:

 {"sort":null,
 "filterFunction":null,
 "source":["ABC","CGR","DRR"],
 "length":3,
 "source":["ABC","CGR","DRR"],
 "length":3}}

I am passing the dList as JSON.encode(dList.source) from Flex.

Upvotes: 0

Views: 538

Answers (3)

user3145373 ツ
user3145373 ツ

Reputation: 8156

Try :

JSONObject jsonObj= JSONObject.fromString(request.getParameter("parameter"));  // will get  parameter in JSONObject
JSONArray arr= jsonObj.getJSONArray("dList"); // will get dList from jsonObj and stored to JSONArray

for( int i = 0 ; i < arr.length() ; i++ ){ //  will iterate up to length of array
    try { // for to handle JSON Exception
         JSONObject object = arr.getJSONObject(i); // will get ith object into JSONObject from array
         System.out.println(object.toString()); // print object
    } catch (JSONException e) {
         e.printStackTrace();
    }
}

Look Running example :

 public static void main(String[] args) throws JSONException {
        JSONObject jo = new JSONObject();
        jo.put("language", "Java");
        JSONArray ja = new JSONArray();
        ja.put(jo);

        for( int i = 0 ; i < ja.length() ; i++ ){
             JSONObject object = ja.getJSONObject(i);
             System.out.println(object.getString("language"));
        }   
 }

this will print Java as output.

NOT RECOMMENDED but Running if Your data will be of 3 characters fixed :

(With String Manipulation)

public static void main(String[] args) throws JSONException {
        JSONArray ja = new JSONArray();
        String[] myStringArray = {"ABC","CGR","DRR"};
        JSONObject j = new JSONObject();
        j.put("source", myStringArray);
        ja.put(j);
        for( int i = 0 ; i < ja.length() ; i++ ){
            JSONObject object = ja.getJSONObject(i);
            if(object.has("source")){
                String a = object.toString();
                String b = a.substring(a.indexOf("[") + 1, a.lastIndexOf("]"));
                List<String> strArr = Arrays.asList(b.split("\","));
                for(int j1=0; j1<strArr.size();j1++){
                    if(strArr.get(j1).length() == 4){ System.out.println(strArr.get(j1).substring(strArr.get(j1).indexOf("\"")+1));
                    }else if (strArr.get(j1).length() == 5){ System.out.println(strArr.get(j1).substring(strArr.get(j1).indexOf("\"")+1,strArr.get(j1).lastIndexOf("\"") ));
                    }else { System.out.println(strArr.get(j1)); }
                }
            }
        }
    }

Upvotes: 1

Learner
Learner

Reputation: 21445

Try this:

JSONObject jsonObj = new JSONObject(request.getParameter("parameter"));
JSONArray array = jsonObj.getJSONArray("dList");

for (int i = 0; i < array.length(); i++) {
    System.out.println(array.get(i));
}

This works if you are using this Jar file

Upvotes: 1

prakash
prakash

Reputation: 109

To get the jsonobject in the JSON array

     JSONObject object = jsonarray.getJSONObject(index);


To get the values from JSON object

Json values should be Key and value pair format 

    JSONObject myJson = new JSONObject(myJsonString);

    String name = myJson.get("name");

**Example**

 String s = "{menu:{\"1\":\"sql\", \"2\":\"android\", \"3\":\"mvc\"}}";
    JSONObject jObject  = new JSONObject(s);
    JSONObject  menu = jObject.getJSONObject("menu");

    Map<String,String> map = new HashMap<String,String>();
    Iterator iter = menu.keys();
    while(iter.hasNext()){
        String key = (String)iter.next();
        String value = menu.getString(key);
        map.put(key,value);
    }

Upvotes: 1

Related Questions