本文介绍了在Android中org.json.JSONObject不能转化为JSONArray的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

当我尝试在我的本地主机它工作的发现。这是提供通过我的本地JSON的。

在这个网址

Ÿ它错误 http://api.androidhive.info/contacts/

  [{
     ID:1,
     FIRST_NAME:人,
     姓氏:女人,
     用户名:人,
     密码:4f70432e6369
70de9929bcc6f1b72412
     电子邮件:[email protected]
     URL:HTTP:\ / \ /本地主机\ / adchara1 \ /
 },{
     ID:6,
     FIRST_NAME:第一,
     姓氏:去年
名称,
     用户名:用户,
     密码:1a1dc91c907325c69271ddf0c944bc72
     电子邮件:0,
     URL:HT
TP:\ / \ / api.androidhive.info \ /触点\ /
 },{
     ID:7,
     如first_name:1,
     姓氏:2,
     用户名:us45
     密码:33d8f54e33896a5722
7b18642979e558
     电子邮件:[email protected]
     URL:HTTP:\ / \ / ugirusgiarto.word press.com \ / 2011 \
/ 10 \ / 27 \ / JSON-PHP-MySQL的与 -  AsyncTask的-progressdialog \ /
 },{
     ID:9,
     FIRST_NAME:名字,
     姓氏:去年
名称,
     用户名:用户名,
     密码:dc647eb65e6711e155375218212b3964
     电子邮件:女人@克
ail.com
     URL:HTTP:\ / \ / mobile.cs.fsu.edu \ /解析JSON的对象 - 在-的AsyncTask \ /
 }]
 

X

MainActivity

 公共类MainActivity延伸活动{
    TextView的文本1,文本;

    @覆盖
    公共无效的onCreate(包savedInstanceState){
        super.onCreate(savedInstanceState);
        的setContentView(R.layout.activity_main);

        新的任务()执行()。
    }

    一流的任务扩展的AsyncTask<字符串,字符串,太虚> {
        私人ProgressDialog progressDialog =新ProgressDialog(
                MainActivity.this);
        InputStream的是= NULL;
        字符串结果=;

        在preExecute保护无效(){
            progressDialog.setMessage(下载数据......);
            progressDialog.show();
            progressDialog.setOnCancelListener(新OnCancelListener(){
                公共无效OnCancel的(DialogInterface为arg0){
                    task.this.cancel(真正的);
                }
            });
        }

        @覆盖
        保护无效doInBackground(字符串... PARAMS){
//字符串url_select =htt​​p://192.168.10.111/adchara1/;
             字符串url_select =htt​​p://api.androidhive.info/contacts/;

            HttpClient的HttpClient的=新DefaultHttpClient();
            HttpPost httpPost =新HttpPost(url_select);

            ArrayList的<的NameValuePair>参数=新的ArrayList<的NameValuePair>();

            尝试 {
                httpPost.setEntity(新UrlEn codedFormEntity(参数));

                HTT presponse HTT presponse = httpClient.execute(httpPost);
                HttpEntity httpEntity = HTT presponse.getEntity();

                //读取内容
                是= httpEntity.getContent();

            }赶上(例外五){

                Log.e(log_tag,错误的HTTP连接+ e.toString());
            }
            尝试 {
                的BufferedReader BR =新的BufferedReader(
                        新的InputStreamReader(是));
                StringBuilder的SB =新的StringBuilder();
                串线=;
                而((行= br.readLine())!= NULL){
                    sb.append(行+\ N);
                }
                is.close();
                结果= sb.toString();

            }赶上(例外五){
                // TODO:处理异常
                Log.e(log_tag,错误转换结果+ e.toString());
            }

            返回null;

        }

        保护无效onPostExecute(空V){

            // ambil数据达里语的Json数据库
            尝试 {
                JSONArray Jarray =新JSONArray(结果);
                的for(int i = 0; I< Jarray.length();我++){
                    JSONObject的Jasonobject = NULL;
                    _1 =(TextView中)findViewById(R.id.txt1);
                    Jasonobject = Jarray.getJSONObject(ⅰ);

                    //获取屏幕上的输出
                    字符串ID = Jasonobject.getString(ID);
                    字符串名称= Jasonobject.getString(姓名);
                    字符串email = Jasonobject.getString(电子邮件);
                    字符串的地址= Jasonobject.getString(地址);
                    字符串性别= Jasonobject.getString(性别);
                    text_1.append(\ N+编号+\ t \ t+姓名+\ t \ t \ t的
                            +电子邮件+\ t \ t \ t \ t+地址+\ t \ t \ t \ t+性别
                            +\ t \ t \ t \ t+\ N);

                }
                this.progressDialog.dismiss();

            }赶上(例外五){
                // TODO:处理异常
                Log.e(log_tag,错误分析数据+ e.toString());
            }
        }
    }

    @覆盖
    公共布尔onCreateOptionsMenu(功能菜单){
        。getMenuInflater()膨胀(R.menu.activity_main,菜单);
        返回true;
    }
}
 

错误

 错误解析数据org.json.JSONException:值{
    人脉:[{
        ID:C200,
        性别:男,
        电话: {
            写字楼:00 000000,
            家:00 000000,
            手机:+91 0000000000
        },
        地址:XX-XX-XXXX,X  - 街道,X  - 国家,
        电子邮件:[email protected]
        名:拉维玉田
    },{
        ID:C201,
        性别:男,
        电话: {
            写字楼:00 000000,
            家:00 000000,
            手机:+91 0000000000
        },
        地址:XX-XX-XXXX,X  - 街道,X  - 国家,
        电子邮件:[email protected]
        名:约翰尼·德普
    },{
        ID:C202,
        性别:男,
        电话: {
            写字楼:00 000000,
            家:00 000000,
            手机:+91 0000000000
        },
        地址:XX-XX-XXXX,X  - 街道,X  - 国家,
        电子邮件:[email protected]
        名:莱昂纳多·迪卡普里奥
    },{
        ID:C203,
        性别:男,
        电话: {
            写字楼:00 000000,
            家:00 000000,
            手机:+91 0000000000
        },
        地址:XX-XX-XXXX,X  - 街道,X  - 国家,
        电子邮件:[email protected]
        名:约翰·韦恩
    },{
        ID:C204,
        性别女,
        电话: {
            写字楼:00 000000,
            家:00 000000,
            手机:+91 0000000000
        },
        地址:XX-XX-XXXX,X  - 街道,X  - 国家,
        电子邮件:[email protected]
        名:安吉丽娜·朱莉
    },{
        ID:C205,
        性别女,
        电话: {
            写字楼:00 000000,
            家:00 000000,
            手机:+91 0000000000
        },
        地址:XX-XX-XXXX,X  - 街道,X  - 国家,
        电子邮件:[email protected]
        名:恶作剧
    },{
        ID:C206,
        性别女,
        电话: {
            写字楼:00 000000,
            家:00 000000,
            手机:+91 0000000000
        },
        地址:XX-XX-XXXX,X  - 街道,X  - 国家,
        电子邮件:[email protected]
        名:阿黛尔
    },{
        ID:C207,
        性别:男,
        电话: {
            写字楼:00 000000,
            家:00 000000,
            手机:+91 0000000000
        },
        地址:XX-XX-XXXX,X  - 街道,X  - 国家,
        电子邮件:[email protected]
        名:休·杰克曼
    },{
        ID:C208,
        性别:男,
        电话: {
            写字楼:00 000000,
            家:00 000000,
            手机:+91 0000000000
        },
        地址:XX-XX-XXXX,X  - 街道,X  - 国家,
        电子邮件:[email protected]
        名:威尔·史密斯
    },{
        ID:C209,
        性别:男,
        电话: {
            写字楼:00 000000,
            家:00 000000,
            手机:+91 0000000000
        },
        地址:XX-XX-XXXX,X  - 街道,X  - 国家,
        电子邮件:[email protected]
        名:克林特·伊斯特伍德
    },{
        ID:C2010
        性别:男,
        电话: {
            写字楼:00 000000,
            家:00 000000,
            手机:+91 0000000000
        },
        地址:XX-XX-XXXX,X  - 街道,X  - 国家,
        电子邮件:[email protected]
        名:巴拉克·奥巴马
    },{
        ID:C2011
        性别女,
        电话: {
            写字楼:00 000000,
            家:00 000000,
            手机:+91 0000000000
        },
        地址:XX-XX-XXXX,X  - 街道,X  - 国家,
        电子邮件:[email protected]
        名:凯特·温斯莱特
    },{
        ID:c2012
        性别:男,
        电话: {
            写字楼:00 000000,
            家:00 000000,
            手机:+91 0000000000
        },
        地址:XX-XX-XXXX,X  - 街道,X  - 国家,
        电子邮件:[email protected]
        名:阿姆
    }]
}
型的org.json.JSONObject不能转换到JSONArray
 

解决方案

试试这样

 的JSONObject对象=新的JSONObject的(结果);
JSONArray Jarray = object.getJSONArray(接触);

的for(int i = 0; I< Jarray.length();我++){
   的JSONObject Jasonobject = Jarray.getJSONObject(ⅰ);
 

When I try in my localhost it work find. this is the JSON that provide by my localhost.

Y it error in this url http://api.androidhive.info/contacts/

         [{
     "id": "1",
     "first_name": "man",
     "last_name": "woman",
     "username": "man",
     "password": "4f70432e6369
70de9929bcc6f1b72412",
     "email": "[email protected]",
     "url": "http:\/\/localhost\/adchara1\/"
 }, {
     "id": "6",
     "first_name": "first",
     "last_name": "Last
Name",
     "username": "user",
     "password": "1a1dc91c907325c69271ddf0c944bc72",
     "email": "0",
     "url": "ht
tp:\/\/api.androidhive.info\/contacts\/"
 }, {
     "id": "7",
     "first_name": "1",
     "last_name": "2",
     "username": "us45",
     "password": "33d8f54e33896a5722
7b18642979e558",
     "email": "[email protected]",
     "url": "http:\/\/ugirusgiarto.wordpress.com\/2011\
/10\/27\/json-php-mysql-with-asynctask-progressdialog\/"
 }, {
     "id": "9",
     "first_name": "First Name",
     "last_name": "Last
Name",
     "username": "Username",
     "password": "dc647eb65e6711e155375218212b3964",
     "email": "woman@gm
ail.com",
     "url": "http:\/\/mobile.cs.fsu.edu\/parse-json-objects-in-asynctask\/"
 }]

x

MainActivity

public class MainActivity extends Activity {
    TextView text_1, text_2;

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        new task().execute();
    }

    class task extends AsyncTask<String, String, Void> {
        private ProgressDialog progressDialog = new ProgressDialog(
                MainActivity.this);
        InputStream is = null;
        String result = "";

        protected void onPreExecute() {
            progressDialog.setMessage("Download data...");
            progressDialog.show();
            progressDialog.setOnCancelListener(new OnCancelListener() {
                public void onCancel(DialogInterface arg0) {
                    task.this.cancel(true);
                }
            });
        }

        @Override
        protected Void doInBackground(String... params) {
//          String url_select = "http://192.168.10.111/adchara1/";
             String url_select = "http://api.androidhive.info/contacts/";

            HttpClient httpClient = new DefaultHttpClient();
            HttpPost httpPost = new HttpPost(url_select);

            ArrayList<NameValuePair> param = new ArrayList<NameValuePair>();

            try {
                httpPost.setEntity(new UrlEncodedFormEntity(param));

                HttpResponse httpResponse = httpClient.execute(httpPost);
                HttpEntity httpEntity = httpResponse.getEntity();

                // read content
                is = httpEntity.getContent();

            } catch (Exception e) {

                Log.e("log_tag", "Error in http connection " + e.toString());
            }
            try {
                BufferedReader br = new BufferedReader(
                        new InputStreamReader(is));
                StringBuilder sb = new StringBuilder();
                String line = "";
                while ((line = br.readLine()) != null) {
                    sb.append(line + "\n");
                }
                is.close();
                result = sb.toString();

            } catch (Exception e) {
                // TODO: handle exception
                Log.e("log_tag", "Error converting result " + e.toString());
            }

            return null;

        }

        protected void onPostExecute(Void v) {

            // ambil data dari Json database
            try {
                JSONArray Jarray = new JSONArray(result);
                for (int i = 0; i < Jarray.length(); i++) {
                    JSONObject Jasonobject = null;
                    text_1 = (TextView) findViewById(R.id.txt1);
                    Jasonobject = Jarray.getJSONObject(i);

                    // get an output on the screen
                    String id = Jasonobject.getString("id");
                    String name = Jasonobject.getString("name");
                    String email = Jasonobject.getString("email");
                    String address = Jasonobject.getString("address");
                    String gender = Jasonobject.getString("gender");
                    text_1.append("\n" + id + "\t\t" + name + "\t\t\t"
                            + email + "\t\t\t\t" + address + "\t\t\t\t" + gender
                            + "\t\t\t\t" + "\n");

                }
                this.progressDialog.dismiss();

            } catch (Exception e) {
                // TODO: handle exception
                Log.e("log_tag", "Error parsing data " + e.toString());
            }
        }
    }

    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        getMenuInflater().inflate(R.menu.activity_main, menu);
        return true;
    }
}

ERROR

Error parsing data org.json.JSONException: Value {
    "contacts": [{
        "id": "c200",
        "gender": "male",
        "phone": {
            "office": "00 000000",
            "home": "00 000000",
            "mobile": "+91 0000000000"
        },
        "address": "xx-xx-xxxx,x - street, x - country",
        "email": "[email protected]",
        "name": "Ravi Tamada"
    }, {
        "id": "c201",
        "gender": "male",
        "phone": {
            "office": "00 000000",
            "home": "00 000000",
            "mobile": "+91 0000000000"
        },
        "address": "xx-xx-xxxx,x - street, x - country",
        "email": "[email protected]",
        "name": "Johnny Depp"
    }, {
        "id": "c202",
        "gender": "male",
        "phone": {
            "office": "00 000000",
            "home": "00 000000",
            "mobile": "+91 0000000000"
        },
        "address": "xx-xx-xxxx,x - street, x - country",
        "email": "[email protected]",
        "name": "Leonardo Dicaprio"
    }, {
        "id": "c203",
        "gender": "male",
        "phone": {
            "office": "00 000000",
            "home": "00 000000",
            "mobile": "+91 0000000000"
        },
        "address": "xx-xx-xxxx,x - street, x - country",
        "email": "[email protected]",
        "name": "John Wayne"
    }, {
        "id": "c204",
        "gender": "female",
        "phone": {
            "office": "00 000000",
            "home": "00 000000",
            "mobile": "+91 0000000000"
        },
        "address": "xx-xx-xxxx,x - street, x - country",
        "email": "[email protected]",
        "name": "Angelina Jolie"
    }, {
        "id": "c205",
        "gender": "female",
        "phone": {
            "office": "00 000000",
            "home": "00 000000",
            "mobile": "+91 0000000000"
        },
        "address": "xx-xx-xxxx,x - street, x - country",
        "email": "[email protected]",
        "name": "Dido"
    }, {
        "id": "c206",
        "gender": "female",
        "phone": {
            "office": "00 000000",
            "home": "00 000000",
            "mobile": "+91 0000000000"
        },
        "address": "xx-xx-xxxx,x - street, x - country",
        "email": "[email protected]",
        "name": "Adele"
    }, {
        "id": "c207",
        "gender": "male",
        "phone": {
            "office": "00 000000",
            "home": "00 000000",
            "mobile": "+91 0000000000"
        },
        "address": "xx-xx-xxxx,x - street, x - country",
        "email": "[email protected]",
        "name": "Hugh Jackman"
    }, {
        "id": "c208",
        "gender": "male",
        "phone": {
            "office": "00 000000",
            "home": "00 000000",
            "mobile": "+91 0000000000"
        },
        "address": "xx-xx-xxxx,x - street, x - country",
        "email": "[email protected]",
        "name": "Will Smith"
    }, {
        "id": "c209",
        "gender": "male",
        "phone": {
            "office": "00 000000",
            "home": "00 000000",
            "mobile": "+91 0000000000"
        },
        "address": "xx-xx-xxxx,x - street, x - country",
        "email": "[email protected]",
        "name": "Clint Eastwood"
    }, {
        "id": "c2010",
        "gender": "male",
        "phone": {
            "office": "00 000000",
            "home": "00 000000",
            "mobile": "+91 0000000000"
        },
        "address": "xx-xx-xxxx,x - street, x - country",
        "email": "[email protected]",
        "name": "Barack Obama"
    }, {
        "id": "c2011",
        "gender": "female",
        "phone": {
            "office": "00 000000",
            "home": "00 000000",
            "mobile": "+91 0000000000"
        },
        "address": "xx-xx-xxxx,x - street, x - country",
        "email": "[email protected]",
        "name": "Kate Winslet"
    }, {
        "id": "c2012",
        "gender": "male",
        "phone": {
            "office": "00 000000",
            "home": "00 000000",
            "mobile": "+91 0000000000"
        },
        "address": "xx-xx-xxxx,x - street, x - country",
        "email": "[email protected]",
        "name": "Eminem"
    }]
}
of type org.json.JSONObject cannot be converted to JSONArray
解决方案

try like this

JSONObject object = new JSONObject(result);
JSONArray Jarray = object.getJSONArray("contacts");

for (int i = 0; i < Jarray.length(); i++) {
   JSONObject Jasonobject = Jarray.getJSONObject(i);

这篇关于在Android中org.json.JSONObject不能转化为JSONArray的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!

07-30 21:20