【问题标题】:JSON object not displaying values after fetching from database从数据库获取后 JSON 对象不显示值
【发布时间】:2016-03-22 20:27:05
【问题描述】:

我正在从 android 的数据库中获取数据,我可以看到使用 POSTMAN 从 JSON 格式的数据库中获取数据,但是当我尝试在我的 android 应用程序中显示它时,它没有显示任何值。 来自 POSTMAN 的值:

{
  "result": [
    {
      "Date": "18-3-2016",
      "Events": "Local Holiday"
    },
    {
      "Date": "23-3-2016",
      "Events": "Monthly Fees"
    },
    {
      "Date": "15-4-2016",
      "Events": "Monthly Fees"
    },
    {
      "Date": "23-4-2016",
      "Events": "Annual Day"
    },
    {
      "Date": "30-4-2016",
      "Events": "session end"
    },
    {
      "Date": "9-4-2016",
      "Events": "Parent Teacher Meeting"
    }
  ]
}

我正在关注一些教程和代码:

 private void getData() {


        loading = ProgressDialog.show(this,"Please wait...","Fetching...",false,false);

        String url = config_events.DATA_URL;

        StringRequest stringRequest = new StringRequest(url, new Response.Listener<String>() {
            @Override
            public void onResponse(String response) {
                loading.dismiss();
                showJSON(response);
            }
        },
                new Response.ErrorListener() {
                    @Override
                    public void onErrorResponse(VolleyError error) {
                        Toast.makeText(events.this,error.getMessage().toString(),Toast.LENGTH_LONG).show();
                    }
                });

        RequestQueue requestQueue = Volley.newRequestQueue(this);
        requestQueue.add(stringRequest);
    }

    private void showJSON(String response) {

        String date = "";
        String comment="";
        //String vc = "";
        try {
            JSONObject jsonObject = new JSONObject(response);
            JSONArray result = jsonObject.getJSONArray(config_events.JSON_ARRAY);
            JSONObject collegeData = result.getJSONObject(0);
            date = collegeData.getString(config_events.KEY_NAME);
            comment = collegeData.getString(config_events.KEY_ADDRESS);
            //vc = collegeData.getString(config_events.KEY_VC);
        } catch (JSONException e) {
            e.printStackTrace();
        }
textViewResult.setText("Date:"+date + "Comment:"+ comment);

【问题讨论】:

  • 尝试在 catch() 中添加一个日志语句;似乎您的 try 块中的某些内容会失败,从而停止日期、要分配的注释值。

标签: java php android json database


【解决方案1】:

假设您已尝试对其进行调试,这可能是 Android 清单中的用户权限问题。确保您在清单文件中具有以下权限。

<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/>

【讨论】:

  • 所有权限都给了
【解决方案2】:

如果您真的通过API 得到响应,您可能需要检查JSON 解析代码,这是我在假设问题中的响应时写的内容

private void showJSON(String response){
    try{
        Log.d(TAG, "showJSON: \n"+response);// print here to check you are getting the right response
        JSONObject response_JsonObject = new JSONObject(response);
        JSONArray result_JsonArray = response_JsonObject.getJSONArray("result");

        ArrayList<Event> events = new ArrayList<>();
        for (int i = 0; i < result_JsonArray.length(); i++) {
            Event single_Event = new Event();
            single_Event.setDate(result_JsonArray.getJSONObject(i).getString("Date"));
            single_Event.setEvent(result_JsonArray.getJSONObject(i).getString("Events"));
            events.add(single_Event);
        }
        Log.d(TAG, "showJSON: Event list size: "+events.size()); // check number of elements
    }catch (Exception e){
        e.printStackTrace();
    }
}

private class Event{

    private String date;
    private String event;

    public String getDate() {
        return date;
    }

    public void setDate(String date) {
        this.date = date;
    }

    public String getEvent() {
        return event;
    }

    public void setEvent(String event) {
        this.event = event;
    }
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-02-14
    • 1970-01-01
    • 2015-09-10
    • 2020-10-03
    • 1970-01-01
    • 2018-06-23
    • 1970-01-01
    • 2014-02-08
    相关资源
    最近更新 更多