简体   繁体   English

android中的java.lang.NoSuchMethodError:org.json.JSONArray错误

[英]java.lang.NoSuchMethodError:org.json.JSONArray error in android

In my application I am trying to parse data through JSON and trying to display in listview in android. 在我的应用程序中,我试图通过JSON解析数据,并试图显示在android的listview中。 But I am getting java.lang.NoSuchMethodError:org.json.JSONArray error while parsing data. 但是我在解析数据时遇到java.lang.NoSuchMethodError:org.json.JSONArray错误。 This is the link that I am using for parsing data. 这是我用于解析数据的链接。 http://demo.tugain.com/tapme/RetriveAll.php?q=cat 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 : 这是我的Logcat输出:

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 JSON数据

[
    [
        {
            "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": []
        }
    ]
]

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());
    }
}

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.. 这可能对您有帮助。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

相关问题 Android JAVA:将 org.json.JSONArray 转换为 Z93F725A07423FE1C889F448B33[D]D。 - Android JAVA : Convert org.json.JSONArray to java.lang.String[] java.lang.ClassCastException:org.json.simple.JSONArray无法强制转换为org.json.JSONArray - java.lang.ClassCastException: org.json.simple.JSONArray cannot be cast to org.json.JSONArray Android org.json.jsonarray无法转换为jsonobject错误 - Android org.json.jsonarray cannot be converted to jsonobject error org.json.JSONArray的remove方法给出了NoSuchMethodError异常 - org.json.JSONArray 's remove method is giving NoSuchMethodError exception java.lang.NoSuchMethodError: org.json.JSONObject.getNames 异常 - java.lang.NoSuchMethodError: org.json.JSONObject.getNames Exception Java.lang.NoSuchMethodError: org.json.JSONObject.put - Java.lang.NoSuchMethodError: org.json.JSONObject.put Android java.lang.NoSuchMethodError - Android java.lang.NoSuchMethodError 错误java.lang.NoSuchMethodError - Error java.lang.NoSuchMethodError Attempt to invoke virtual method 'org.json.JSONArray org.json.JSONObject.getJSONArray(java.lang.String)' on a null object reference - Attempt to invoke virtual method 'org.json.JSONArray org.json.JSONObject.getJSONArray(java.lang.String)' on a null object reference Android 中的错误'JSONException: org.json.JSONArray 类型的值 [] 无法转换为 JSONObject' - Error 'JSONException: Value [] of type org.json.JSONArray cannot be converted to JSONObject' in Android
 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM