php - 如何使用 jsonOject 解析多行

标签 php android mysql json

我正在使用 php API 从 mysql 获取数据,并使用 Json_encode 将结果传递给 android,但是当我将结果填充到 android listview 时,我只得到第一行。

这是我上网的结果: {"error":false,"user":{"paid_amount":"500","parking_duration":"59min","parking_name":"asass"}} {"error":false,"user":{"paid_amount":"100","parking_duration":"22min","parking_name":"SDSDASDAS"}}

PHP 部分:

                       ...........
                      $usersArr = $db->getDriverHistory($plate_no);
           if ($usersArr != false) {
          foreach($usersArr as $key=>$user){
            // use is found
          $response[$key]["error"] = FALSE;
             $response[$key]["user"]["paid_amount"] = $user["paid_amount"];
             $response[$key]["user"]["parking_duration"] = 
          $user["parking_duration"];
        $response[$key]["user"]["parking_name"] = $user["parking_name"];
      $response = $response[$key] ;
         // echo json_encode($response), "<br>";
        // echo $response;        
          $json = json_encode($response);
          echo $json,"<br>";
             ......

Android 代码:我需要的是获得车牌号等于某个数字的所有结果,但我只得到一行而不是所有行。

                 private void GetParkingInfo(final String plate_no) {
               // Tag used to cancel the request
       String tag_string_req = "req_Verfication";

       progressBarList.setVisibility(View.VISIBLE);
           //        myList.setVisibility(View.GONE);

        StringRequest strReq = new StringRequest(Request.Method.POST,
            Urls.URL_driver_parking_information, new 
         Response.Listener<String>() {

        @Override
        public void onResponse(String response) {
            Log.d(TAG, "cerfication Response: " + response.toString());             
            // Parsing json
            for (int i = 0; i < response.length(); i++) {

                 try {

                     JSONObject jObj = new JSONObject(response);
                    boolean error = jObj.getBoolean("error");
                    // Check for error node in json
                    if (!error) {


                        // user successfully exist in database
                        JSONObject user = jObj.getJSONObject("user");
                        String paid_amount = user.getString("paid_amount");
                        String parking_duration = 
               user.getString("parking_duration");
                        String parking_name = user.getString("parking_name");
                        HashMap<String, String> prodHashMap = new 
                    HashMap<String, String>();

                        prodHashMap.put("paid_amount", paid_amount);
                        prodHashMap.put("parking_duration", parking_duration);
                        prodHashMap.put("parking_name", parking_name);

                        ArrayList<HashMap<String, String>> wordList;
                           wordList = new ArrayList<HashMap<String, String>>();
                        wordList.add(prodHashMap);
                        userList = wordList ;
                        ShowListData();

                        progressBarList.setVisibility(View.GONE);

                         }

                      else{

                        // Error in login. Get the error message
              //                       // hiding the progress bar
                        progressBarList.setVisibility(View.GONE);
                         myList.setVisibility(View.VISIBLE);
                        String errorMsg = jObj.getString("error_msg");
                        Toast.makeText(getApplicationContext(), errorMsg, 
               Toast.LENGTH_LONG).show();

                    }

                   } catch (JSONException e) {
                    // JSON error
                    e.printStackTrace();
                    Toast.makeText(getApplicationContext(), "Json error: " + 
             e.getMessage(), Toast.LENGTH_LONG).show();
        //                     // hiding the progress bar
                    progressBarList.setVisibility(View.GONE);
                    myList.setVisibility(View.VISIBLE);
                   }
                }
            }
              }, new Response.ErrorListener() {

           @Override
           public void onErrorResponse(VolleyError error) {
            Log.e(TAG, "Verfication error Error: " + error.getMessage());

            Toast.makeText(getApplicationContext(),
                    "response error", Toast.LENGTH_LONG).show();
          //                Toast.makeText(getApplicationContext(),
        //                        error.getMessage(), Toast.LENGTH_LONG).show();
            // hiding the progress bar
            progressBarList.setVisibility(View.GONE);
            myList.setVisibility(View.VISIBLE);
            }
             }) {
            @Override
             protected Map<String, String> getParams() {

            // Posting parameters to verfication url
            Map<String, String> params = new HashMap<String, String>();
            params.put("plate_no", plate_no);
            return params;
           }
        };
    //        // Adding request to request queue

        AppController.getInstance().addToRequestQueue(strReq,tag_string_req);
       }

最佳答案

你在错误的地方初始化了集合,请看下面的代码这可能对你有帮助

 ArrayList<HashMap<String, String>> wordList;
            wordList = new ArrayList<HashMap<String, String>>();

            for (int i = 0; i < response.length(); i++) {

                try {

                    JSONObject jObj = new JSONObject(response);
                    boolean error = jObj.getBoolean("error");
                    // Check for error node in json
                    if (!error) {


                        // user successfully exist in database
                        JSONObject user = jObj.getJSONObject("user");
                        String paid_amount = user.getString("paid_amount");
                        String parking_duration =
                                user.getString("parking_duration");
                        String parking_name = user.getString("parking_name");
                        HashMap<String, String> prodHashMap = new
                                HashMap<String, String>();

                        prodHashMap.put("paid_amount", paid_amount);
                        prodHashMap.put("parking_duration", parking_duration);
                        prodHashMap.put("parking_name", parking_name);


                        wordList.add(prodHashMap);
                        ;

                        progressBarList.setVisibility(View.GONE);

                    }

                    userList = wordList ;
                    ShowListData()

关于php - 如何使用 jsonOject 解析多行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45330098/

相关文章:

php - Laravel - 清除重定向::意图()

android - Firebase 查询从几个 child 那里检索数据并做数学运算

mysql - 多个 Rails 应用程序读取另一个 Rails 应用程序的单个数据库/表

php - 使用 PHP 从 API 将数据上传到 Mysql DB

php - MVC 框架中的缓存策略?

php - MySQL View 查询优化

php - Google 群组和订阅代码

c# - 尝试使用 su 执行命令时出现 SyncFailedException

android - 在扩展 SherlockMapActivity 的 Activity 中未调用 onActivityResult() 方法

MySQL在缩短字符串时添加点(..)