Reputation: 4562
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
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
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
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