【问题标题】:How to get the COUNT(id) value of json from php to android如何从php到android获取json的COUNT(id)值
【发布时间】:2017-05-13 06:08:07
【问题描述】:

当我尝试获取我的数据库的 Count(id) 值时出现错误。 我想获取值并将他放在 textView 中。

这是我的 java 代码(响应已经构造为一个数组)

public  void  test3(View rootView){ 

   String result = null;

    try
    {
        tv = (TextView) rootView.findViewById(R.id.textView);
        RequestQueue queue = Volley.newRequestQueue(getActivity().getApplicationContext());

        String url = "http://brunos.000webhostapp.com/teste/listar_divisoes.php";

        final String finalResult = result;
        JsonArrayRequest jsonRequest = new JsonArrayRequest
                (Request.Method.GET, url, null, new Response.Listener<JSONArray>() {
                    @Override
                    public void onResponse(JSONArray response) {
                        try {
                            JSONObject jObj = new JSONObject(finalResult);
                            String count= jObj.getString("COUNT(id)");
                            tv.setText(count);
                        } catch (JSONException e) {
                            e.printStackTrace();
                        }
                    }
                }, new Response.ErrorListener() {

                    @Override
                    public void onErrorResponse(VolleyError error) {
                        error.printStackTrace();
                    }
                });
        queue.add(jsonRequest);
    }

这是我的 php 代码:

<?php
include 'database.php';
$pDatabase = Database::getInstance();
$sql = "SELECT COUNT(id) FROM divisao;";
$result = $pDatabase->query($sql);
$rows = array();
    while($temp = mysqli_fetch_assoc($result)) {
        $rows[] = $temp;
}
    echo json_encode($rows);
?>

【问题讨论】:

  • “json_encode($rows);”的输出是什么?
  • [{"COUNT(id)":"2"}] 这是输出

标签: java php android mysql json


【解决方案1】:

我认为 Json 字段的名称存在问题 - COUNT(id)。 修改您的 SQL 请求:

SELECT COUNT(id) as count FROM divisao;

然后像你一样从 JSON 中解析值:

JSONObject jObj = new JSONObject(finalResult);
String count= jObj.getString("count"); //changed "COUNT(id)" to "count"
tv.setText(count);

【讨论】:

  • 我不明白如何使用“count”名称。我应该把它放在哪里?
  • 字符串计数= jObj.getString("count");
  • java.lang.NullPointerException。当我放那个时我有这个错误。
  • 我猜 finalResult 也是 NULL?
  • 是的,它也是空的
【解决方案2】:

您没有读取 JSONArray 响应对象:

 public void onResponse(JSONArray response) {
    try {
             JSONObject jObj = new JSONObject(finalResult);
             String count= jObj.getString("COUNT(id)");
             tv.setText(count);
    } catch (JSONException e) {
         e.printStackTrace();
    }

}

应该是:

 public void onResponse(JSONArray response) {
    try {
             JSONObject jObj = new JSONObject(response.get(0));
             String count= jObj.getString("COUNT(id)");
             tv.setText(count);
    } catch (JSONException e) {
         e.printStackTrace();
    }

}

【讨论】:

  • 是的,就是这样!只需要放 (String.valueOf(response.get(0)));成功了,非常感谢!
  • 如果我想返回那个值?我应该怎么做?
  • 你不能将它设置为结果,因为它是最终的。您可以从 Response 内部调用 Activity 的方法,例如 setCount(int) 将其存储或显示。
  • 嗯,谢谢!当我在数据库中插入一个值来获取json请求的id时是否可以?例如:我插入id(autoincremente)和description = var,是否可以接收该id?
  • 请不要在这一篇中问别人问题,页面会变得太刺眼而无法阅读。对于您的问题,请参见我认为:stackoverflow.com/questions/897356/…
猜你喜欢
  • 1970-01-01
  • 2013-05-03
  • 1970-01-01
  • 2021-06-17
  • 2017-10-14
  • 2021-01-09
  • 1970-01-01
  • 2019-04-20
  • 2012-07-16
相关资源
最近更新 更多