In my application I am trying to parse data through JSON and trying to display in listview in android. But I am getting java.lang.NoSuchMethodError:org.json.JSONArray error while parsing data. This is the link that I am using for parsing data. http://demo.tugain.com/tapme/RetriveAll.php?q=cat
For this, I used the below code :
private void connect()
{
String data;
JSONArray json;
try
{
DefaultHttpClient client = new DefaultHttpClient();
HttpGet request = new HttpGet("http://demo.tugain.com/tapme/RetriveAll.php?q=cat");
HttpResponse response = client.execute(request);
HttpEntity entity=response.getEntity();
data=EntityUtils.toString(entity);
Log.e("STRING", data);
try
{
JSONObject obj=null;
json=new JSONArray(data);
JSONArray actualJson=json.getJSONArray(0);
for(int i=0;i<actualJson.length();i++)
{
obj=actualJson.getJSONObject(i);
name=obj.getString("name");
Log.e("name",name);
mAdapter.addSectionHeaderItem(name);
setListAdapter(mAdapter);
//JSONArray json1=new JSONArray("data");
JSONArray json1=new JSONArray(obj.getJSONArray("data"));
for(int j=0;j< json1.length();j++)
{
JSONObject obj1=null;
obj1 = json1.getJSONObject(j);
CompName= obj1.getString("vendor_name");
CompID=obj1.getString("vendor_id");
Log.e("vender",CompName);
Log.e("id",CompID);
}
}
}
catch (JSONException e)
{
e.printStackTrace();
}
} catch (ClientProtocolException e) {
Log.d("HTTPCLIENT", e.getLocalizedMessage());
} catch (IOException e) {
Log.d("HTTPCLIENT", e.getLocalizedMessage());
}
}
Please help me and let me know the exact problem or mistake I'm doing. This is my Logcat output :
01-04 13:48:50.293: E/STRING(2940): [[{"name":"Banking","data":[{"vendor_name":"SBI","vendor_id":"1"},{"vendor_name":"ICICI","vendor_id":"2"},{"vendor_name":"BOB","vendor_id":"3"}]},{"name":"Telecom","data":[{"vendor_name":"AirTel","vendor_id":"4"},{"vendor_name":"Vodafone","vendor_id":"5"}]},{"name":"Automobile","data":[{"vendor_name":"Hyundai","vendor_id":"6"}]},{"name":"Hotels","data":[]}]]
01-04 13:48:50.303: E/name(2940): Banking
01-04 13:48:50.303: D/AndroidRuntime(2940): Shutting down VM
01-04 13:48:50.303: W/dalvikvm(2940): threadid=1: thread exiting with uncaught exception (group=0x41da1300)
01-04 13:48:50.313: E/AndroidRuntime(2940): FATAL EXCEPTION: main
01-04 13:48:50.313: E/AndroidRuntime(2940): java.lang.NoSuchMethodError: org.json.JSONArray.<init>
01-04 13:48:50.313: E/AndroidRuntime(2940): at com.infoz.tapme.Companies.connect(Companies.java:119)
01-04 13:48:50.313: E/AndroidRuntime(2940): at com.infoz.tapme.Companies.onCreate(Companies.java:82)
01-04 13:48:50.313: E/AndroidRuntime(2940): at android.app.Activity.performCreate(Activity.java:5008)
01-04 13:48:50.313: E/AndroidRuntime(2940): at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1079)
01-04 13:48:50.313: E/AndroidRuntime(2940): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2023)
01-04 13:48:50.313: E/AndroidRuntime(2940): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2084)
01-04 13:48:50.313: E/AndroidRuntime(2940): at android.app.ActivityThread.access$600(ActivityThread.java:130)
01-04 13:48:50.313: E/AndroidRuntime(2940): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1195)
01-04 13:48:50.313: E/AndroidRuntime(2940): at android.os.Handler.dispatchMessage(Handler.java:99)
01-04 13:48:50.313: E/AndroidRuntime(2940): at android.os.Looper.loop(Looper.java:137)
01-04 13:48:50.313: E/AndroidRuntime(2940): at android.app.ActivityThread.main(ActivityThread.java:4745)
01-04 13:48:50.313: E/AndroidRuntime(2940): at java.lang.reflect.Method.invokeNative(Native Method)
01-04 13:48:50.313: E/AndroidRuntime(2940): at java.lang.reflect.Method.invoke(Method.java:511)
01-04 13:48:50.313: E/AndroidRuntime(2940): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:786)
01-04 13:48:50.313: E/AndroidRuntime(2940): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:553)
01-04 13:48:50.313: E/AndroidRuntime(2940): at dalvik.system.NativeStart.main(Native Method)
JSON Data
[
[
{
"name": "Banking",
"data": [
{
"vendor_name": "SBI",
"vendor_id": "1"
},
{
"vendor_name": "ICICI",
"vendor_id": "2"
},
{
"vendor_name": "BOB",
"vendor_id": "3"
}
]
},
{
"name": "Telecom",
"data": [
{
"vendor_name": "AirTel",
"vendor_id": "4"
},
{
"vendor_name": "Vodafone",
"vendor_id": "5"
}
]
},
{
"name": "Automobile",
"data": [
{
"vendor_name": "Hyundai",
"vendor_id": "6"
}
]
},
{
"name": "Hotels",
"data": []
}
]
]
JSONArray json1=obj.getJSONArray("data");??