用于获取Json对象和显示的Android代码

时间:2016-02-16 15:56:15

标签: android json rest jsonobject

我的问题是我在Rest Api中有一个名为name的Json对象。登录/注册后,我需要获取它并在我的应用程序中显示textView15字段。我不知道如何获取和显示Json。任何帮助都会很明显。

Api是:

{
  "users": {
    "_id": "gcx8ksa4XepvYRyWH",
    "emails": [
      {
        "address": "selenium@gmail.com",
        "verified": false
      }
    ]
  },
  "user": {
    "_id": "wWHmKn5ciWAHZGt2m",
    "user_id": "gcx8ksa4XepvYRyWH",
    "name": "selenium@gmail.com",
    "hubs": [],
    "username": "selenium",
    "industry": "selenium",
    "profession": "selenium"
  }
}

我的代码:

 AsyncHttpClient client = new AsyncHttpClient();
        applyJobItems.clear();
        List<String> userCredentials = UserUtils.getLoginDetails();
        client.addHeader("x-user-id", userCredentials.get(0));
        client.addHeader("x-auth-token", userCredentials.get(1));
        client.get("https://", new AsyncHttpResponseHandler() {
            @Override
            public void onSuccess(int statusCode, Header[] headers, byte[] responseBody) {

                final String response = new String(responseBody);
                android.util.Log.e("Response", "" + response);

                try {
                    JSONObject jsonObject = new JSONObject(response);
                    final JSONArray jsonArray = jsonObject.getJSONArray("user");


                    final List<String> names = new ArrayList<String>();
                    for (int i = 0; i < jsonArray.length(); i++) {
                        JSONObject inter = new JSONObject(jsonArray.get(i).toString());
                        ApplyJobItem jobItem = new ApplyJobItem();
                        jobItem.setName(inter.getString("name"));
                        names.add(inter.getString("name"));
                        applyJobItems.add(jobItem);
                        android.util.Log.e("name", inter.getString("name"));
                    }
                }catch (Exception e) {
                        e.printStackTrace();
                    }

3 个答案:

答案 0 :(得分:1)

将这个json放在android中的JSONObject变量中并像

一样解析它
String name = jsonObject.getJSONObject('user').getString('name');

此处jsonObject是您从服务器获取的主要json对象的名称..

编辑:Json Parsing教程。

这里有一些指导如何解析json

http://www.androidhive.info/2012/01/android-json-parsing-tutorial/

答案 1 :(得分:1)

您可以使用凌空按照以下方式轻松获取数据并渲染到视图中......

登录此代码后执行...

SSIS Upgrade Wizard in SQl Server Data Tools

凌空的应用配置类(需要添加凌空库)

详细了解凌空Get Volley

List<Users> list = new ArratList<Users>();
CustomUserAdapter adapter;
JsonArrayRequest getJsonData = new JsonArrayRequest("<your_url>,
            new Response.Listener<JSONArray>() {
                @Override
                public void onResponse(JSONArray response) {
                    for (int i = 0; i < response.length(); i++) {
                        try {
                            Users mList = new Users();

                            JSONObject obj = response.getJSONObject(i);

                            JSONArray answers = obj.getJSONArray("emails");

                            long count = answers.length();
                            if(count > 0){
                                //setter methods
                            }

                            mList.setIDL(obj.getString("_id"));
                            list.add(mList);

                        } catch (JSONException e) {
                            Log.d("JSONError", e.toString());
                        }

                    }
                    adapter.notifyDataSetChanged();
                    //your listview findViewById().....
                    listView.setVisibility(View.VISIBLE);

                }
            }, new Response.ErrorListener() {
        @Override
        public void onErrorResponse(VolleyError error) {
            VolleyLog.d(TAG, "Error: " + error.getMessage());
            Toast.makeText(getApplicationContext(),"Error in fetchinf data",Toast.LENGTH_LONG).show();

        }
    });

    AppController.getInstance().addToRequestQueue(getJsonData);

}

答案 2 :(得分:-1)

使用Retrofit。它会为你解析。

http://square.github.io/retrofit/