【问题标题】:how to parse json object and json array in listview android如何在listview android中解析json对象和json数组
【发布时间】:2016-03-29 10:58:07
【问题描述】:

我是 android 应用程序的初学者。我在如何将 json 对象和 json 数组解析为 android 中的 listview 时遇到了麻烦。这是我的 json 输出

使用 JSON 更正更新

{status: "ok", listUsers: [{"id":2,"username":"myusername","name":"myname","email":"myemail","password":"mypassword","groupid":1,"type":"mytype"},{"id":3,"username":"myusername","name":"myname","email":"myemail2","password":"mypassword2","groupid":1,"type":"mytype"},{"id":4,"username":"username1","name":"name1","email":"email1","password":"pass1","groupid":1,"type":"type1"},{"id":5,"username":"username1","name":"name1","email":"email1","password":"pass1","groupid":1,"type":"type1"},{"id":6,"username":"username1","name":"name1","email":"email1","password":"pass1","groupid":1,"type":"type1"},{"id":7,"username":"username1","name":"name1","email":"email1","password":"pass1","groupid":1,"type":"type1"},{"id":8,"username":"username1","name":"name1","email":"email1","password":"pass1","groupid":1,"type":"type1"},{"id":9,"username":"username1","name":"name1","email":"email1","password":"pass1","groupid":1,"type":"type1"},{"id":10,"username":"username1","name":"name1","email":"email1","password":"pass1","groupid":1,"type":"type1"},{"id":11,"username":"username1","name":"name1","email":"email1","password":"pass1","groupid":1,"type":"1"},{"id":12,"username":"username1","name":"name1","email":"email1","password":"pass1","groupid":1,"type":"type1"},{"id":13,"username":"yuwah","name":"yu","email":"mail@gmail.com","password":"pass1","groupid":1,"type":"type1"},{"id":14,"username":"myusername","name":"myname","email":"myemail2","password":"mypassword2","groupid":1,"type":"mytype"}] }

谁能解释我怎么做。我正在搜索所有主题,但我仍然无法得到它。谢谢。 这是我的代码块

public class MainActivity extends ListActivity {

String url = "http://staging.workberryplus.com/mobile/listUsers/1";
ProgressDialog PD;

ArrayList<String> listUsers;
ArrayAdapter<String> adapter;


@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);

    listUsers = new ArrayList<String>();

    PD = new ProgressDialog(this);
    PD.setMessage("Loading.....");
    PD.setCancelable(false);

    adapter = new ArrayAdapter(this, R.layout.items, R.id.tv, listUsers);
    setListAdapter(adapter);

    MakeJsonArrayReq();
    // ATTENTION: This was auto-generated to implement the App Indexing API.
    // See https://g.co/AppIndexing/AndroidStudio for more information.
}

private void MakeJsonArrayReq() {
    PD.show();

    //JsonArrayRequest jr=new JsonArrayRequest(url, listener, errorListener)


    final StringRequest jreq = new StringRequest(url,
            new Response.Listener<String>() {

                @Override
                public void onResponse(String response) {

                    for (int i = 0; i < response.length(); i++) {
                        try {
                            Log.d("Response","->"+response);
                            JSONObject jo = new JSONObject(response);
                            JSONArray jarray = jo.getJSONArray("listUsers");
                            JSONObject jo2 = jarray.getJSONObject(i);
                            String name = jo2.getString("name");
                            listUsers.add(name);

                        } catch (JSONException e) {
                            e.printStackTrace();
                        }
                    }

                    PD.dismiss();
                    adapter.notifyDataSetChanged();
                }
            }, new Response.ErrorListener() {
        @Override
        public void onErrorResponse(VolleyError error) {
        }
    });

    MyApplication.getInstance().addToReqQueue(jreq, "jreq");
}

}

【问题讨论】:

标签: android json


【解决方案1】:
     try {
           JSONObject jo = new JSONObject(response);
           JSONArray jarray =jo.getJSONArray("listUsers");  

           for (int i = 0; i < jarray.length(); i++){                        
                JSONObject jo2 = jarray.getJSONObject(i);
                String name = jo2.getString("name");
                listUsers.add(name);
              }
            } catch (JSONException e) {
                e.printStackTrace();
            }

【讨论】:

    【解决方案2】:

    将您的字符串转换为对 Json 对象的响应

    JSONObject jsonObj = new JSONObject(response);
    

    然后执行以下操作

     try {
                if (jsonObj != null) {
                    if (jsonObj.optString("status").equals("ok")) {
                        JSONArray jsonArray = jsonObj.optJSONArray("listUsers");
                        for (int i = 0; i < jsonArray.length(); i++) {
                            JSONObject jsonObject = jsonArray.optJSONObject(i);
                            if (jsonObject != null) {
                               //Do work here
    
    
                            }
                        }
    }
    }
    }catch (Exception e1) {
                    e1.printStackTrace();
                }
    

    试试这个并做出相应的改变,让我知道它是否适合你

    【讨论】:

    • 还是不行啊兄弟。 logcat 说 {java.lang.NullPointerException: Attempt to invoke virtual method 'int org.json.JSONArray.length()' on a null object reference}
    【解决方案3】:
    JSONObject jo2 = jarray.getJSONObject(i);
    

    您正在迭代响应的长度(一个字符串)。您应该遍历 jarray 的长度

    【讨论】:

      猜你喜欢
      • 2015-04-28
      • 2016-11-20
      • 1970-01-01
      • 2013-09-29
      • 2015-06-13
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多