Reputation: 1122
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": []
}
]
]
Upvotes: 0
Views: 6052
Reputation: 8337
Try This code...
try
{
String data ="YOUR JSON ARRAY RESULT";
JSONObject obj=null;
JSONArray jsonArr =new JSONArray(data).getJSONArray(0);
for(int i=0;i<jsonArr.length();i++)
{
String name=jsonArr.getJSONObject(i).getString("name");
Log.e("name",name);
//mAdapter.addSectionHeaderItem(name);
//setListAdapter(mAdapter);
JSONArray dataArray =new JSONArray();
dataArray = jsonArr.getJSONObject(i).getJSONArray("data");
for(int j=0;j<dataArray.length();j++)
{
JSONObject dataObject = new JSONObject();
dataObject = dataArray.getJSONObject(j);
String CompName= dataObject.getString("vendor_name");
String CompID= dataObject.getString("vendor_id");
Log.e("vender",CompName);
Log.e("id",CompID);
}
}
}
catch (JSONException e)
{
e.printStackTrace();
}
modify as per your need in this code...
Always try to use Object Name or Array name through which identify its use.. don't use some messy names..
this may help you..
Upvotes: 0
Reputation: 2877
try this i have done some changes in your connect method
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);
String name = obj.getString("name");
Log.e("STRING", name);
// mAdapter.addSectionHeaderItem(name);
// setListAdapter(mAdapter);
// JSONArray json1=new JSONArray("data");
JSONArray json1 =obj.getJSONArray("data");
for (int j = 0; j < json1.length(); j++) {
JSONObject obj1= json1.getJSONObject(j);
String CompName= obj1.getString("vendor_name");
Log.e("STRING", CompName);
// 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());
}
}
Upvotes: 1