为什么我在json中有双括号

时间:2015-07-30 11:23:56

标签: android json

为什么我要加倍'[[? 它应该是一个支架吗? '['

  

[[{“name”:“50的阴影   灰色 “ ”路径“: ”http://api.androidhive.info/json/movies/1.jpg“, ”描述“:” 长   故事“,”喜欢“:”5“,”评论“:”非常   好 “},{” 名 “:” 变形金刚”, “路径”: “http://api.androidhive.info/json/movies/2jpg”, “说明”: “机器人”, “喜欢”: “7” ,“评论”:”   美丽的 “},{” 名 “:” Avangeers “ ”路径“: ”http://api.androidhive.info/json/movies/3.jpg“, ”说明“:” 绿巨人   和铁人“,”喜欢“:”8“,”评论“:”哇“}]]

这是我的php

$sql = "select name , path , description , likes , comments from image ";

$res = mysqli_query($con,$sql);

$result = array();

while($row = mysqli_fetch_array($res)){
array_push($result,
array('name'=>$row[0],
'path'=>$row[1],
'description'=>$row[2],
'likes'=>$row[3],
'comments'=>$row[4]
));
}


echo json_encode(array($result));
mysqli_close($con);

在这样的代码中获取它是否正确?

   JsonArrayRequest movieReq = new JsonArrayRequest(url,
                new Response.Listener<JSONArray>() {
                    @Override
                    public void onResponse(JSONArray response) {
                        Log.d("r", response.toString());
                        hidePDialog();
                        System.out.print(response);

                        // Parsing json
                        for (int i = 0; i < response.length(); i++) {
                            try {

                                JSONObject obj = response.getJSONObject(i);
                                Movie movie = new Movie();
                                movie.setTitle(obj.getString("name"));
                                movie.setThumbnailUrl(obj.getString("path"));
                                movie.setRating(obj.getString("description"));
                              //  movie.setRating(((Number) obj.get("description"))
                                    //    .doubleValue());
                                movie.setYear(obj.getString("likes"));
                              //  movie.setYear(obj.getInt("likes"));

                                // Genre is json array
                                JSONArray genreArry = obj.getJSONArray("comments");
                                ArrayList<String> genre = new ArrayList<String>();
                                for (int j = 0; j < genreArry.length(); j++) {
                                    genre.add((String) genreArry.get(j));
                                }
                                movie.setGenre(genre);

                                // adding movie to movies array
                                movieList.add(movie);

                            } catch (JSONException e) {
                                e.printStackTrace();
                            }

                        }

                        // notifying list adapter about data changes
                        // so that it renders the list view with updated data
                        adapter.notifyDataSetChanged();
                    }
                }, new Response.ErrorListener() {
                    @Override
                    public void onErrorResponse(VolleyError error) {
                        System.out.print(error);
                        VolleyLog.d(TAG, "Error: " + error.getMessage());
                        hidePDialog();

                    }
                });

1 个答案:

答案 0 :(得分:3)

$result是一个数组。 你在该数组中推送关联数组(成为对象),所以现在你有[{...},{...}]

然后你做:

echo json_encode(array($result));

所以你得到一个包含数组的数组,导致上面的结果带有额外的'['around:[[{...},{...}]]