【问题标题】:Getting only first element of json只获取json的第一个元素
【发布时间】:2017-07-17 08:31:32
【问题描述】:

尝试在真实响应时打开此 json,但仅获取此 api_data 的第一个元素。

无法获取其余数据。 我尝试了下面提到的方法来获取“api_data”但无法获取, 不明白为什么其他数据在日志中对我不可用。

{
    "api_req": true,
    "api_data": [{
        "ID": "1",
        "project_name": "project test xen",
        "project_content": "lita5645"
    }, {
        "ID": "5",
        "project_name": "C\/o 48 No Houses T-II and 48 No houses T-III in New Police Lines Faridabad",
        "project_content": "lita5646"
    }]
} 

我的改造类从 api 获取数据..

 public void onResponse(Call<ResponseActivityList> call, Response<ResponseActivityList> response) {
                progressDialog.dismiss();
                //progressDialog.setCanceledOnTouchOutside(true);
                // Response Success or Fail
                if (response.isSuccessful()) {
                    if (response.body().isApi_req()) {
                        //success uploading the data
                        // results.setText(response.body().getResponse());
                        //  Toast.makeText(XenImageUploading.this, "success " + response.body().get_apiData(), Toast.LENGTH_SHORT).show();
                        Gson gson = new Gson();



                        data.add(gson.toJson(response.body().getApi_data()));


                        for (int i = 0 ; i<data.size(); i++){
                            Log.e("Array", String.valueOf(data.size()));
                            projectnae_content.add(response.body().getApi_data().get(i).getID());
                            //Log.e("project",projectnae_content.toString());
                            //project_id.add(response.body().getApi_data().get(i).getID().toString());
                        }
//                        Log.e("project_name" ,projectnae_content.toString());
                        //Toast.makeText(XenImageUploading.this, jsonInString, Toast.LENGTH_SHORT).show();
                        //String Project_name_content= response.body().getApi_data();
                        //Log.e("intersection_list", intersection_list.get(0));

                    } else {
                        //error uploading data
                        //results.setText(response.body().getResponse());
                        //Toast.makeText(XenImageUploading.this, R.string.string_upload_fail, Toast.LENGTH_SHORT).show();
                        Log.e("failure", String.valueOf(response.body().isApi_req()));

                    }
                } else {
                    //error uploading data
                    //Toast.makeText(XenImageUploading.this, R.string.string_upload_fail, Toast.LENGTH_SHORT).show();
                    Log.e("failure2", response.message());

                }
            } 

【问题讨论】:

  • 如何解析数据?
  • 你在获取only first element of json 时没有展示你是如何解析json的
  • 迟到了,但感谢大家的帮助..

标签: java android json android-json


【解决方案1】:

像这样解析,你必须将属性与 JSON 匹配

JSONObject jsonObj = new JSONObject(Response);
 JSONArray JsonArray = jsonObj.getJSONArray("api_data");

 for (int i = 0; i < JsonArray.length(); i++) {
 JSONObject jsonObject = JsonArray.getJSONObject(i);

   String id=jsonObject.getString("ID");
   String projectname=jsonObject.getString("project_name");
   String content=jsonObject.getString("project_content");

  }

【讨论】:

    【解决方案2】:

    收到内容后需要解析数据。在这里,我附上示例演示来解析您的 json。

    try {
                JSONObject jsonObject = new JSONObject("hello");
                JSONArray api_data=jsonObject.getJSONArray("api_data");
                for (int i = 0; i < api_data.length(); i++) {
                    String id=api_data.getJSONObject(i).getString("ID");
                    String name=api_data.getJSONObject(i).getString("project_name");
                    String content=api_data.getJSONObject(i).getString("project_content");
                }
            } catch (JSONException e) {
                e.printStackTrace();
            }
    

    【讨论】:

      【解决方案3】:

      试试这个

       JSONObject jsonObj = new JSONObject(Response);
       // Getting JSON Array node
       JSONArray JsonArray = jsonObj.getJSONArray("api_data");
       // looping through All JSON Array
       for (int i = 0; i < JsonArray.length(); i++) {
       JSONObject data = JsonArray.getJSONObject(i);
      
         Log.e("ID :-> ",data.getString("ID"));// get id
         Log.e("project_name :-> ",data.getString("project_name"));// get project name
         Log.e("project_content :-> ",data.getString("project_content"));// get project content
        }
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2023-02-05
        • 2011-06-07
        • 2019-03-26
        • 1970-01-01
        • 1970-01-01
        • 2022-01-19
        • 2016-11-24
        • 2020-04-07
        相关资源
        最近更新 更多