预期BEGIN_ARRAY但在第1行第2列路径处是BEGIN_OBJECT

时间:2017-03-03 18:24:48

标签: java android json gson

我试图使用GSON将json放到recyclerview但是当我运行它时它给了我“预期的BEGIN_ARRAY但是在第1行第2列路径$ BEGIN_OBJECT”错误!

这是我的json:

{"action":"true","error":"","data":[{"_id":"58ad8d8ca49d0e11e21c4504","store_name":"firstStore","store_view":0,"store_textposition":null},{"_id":"58ad9063cb35f5977b55dfd6","store_name":"firstStorestest","store_view":0,"store_textposition":null},{"_id":"58ad9088cb35f5977b55dfd7","store_name":"firstStorestest","store_view":0,"store_textposition":null}]}

这里是我收到错误的地方:

    private void requestJsonObject(){
    RequestQueue queue = Volley.newRequestQueue(getContext());
    String url ="MYURL";
    StringRequest stringRequest = new StringRequest(Request.Method.POST, url, new Response.Listener<String>() {
        @Override
        public void onResponse(String response) {
            Log.d(TAG, "Response " + response);
            GsonBuilder builder = new GsonBuilder();
            Gson mGson = builder.create();
            List<ItemObject> posts = new ArrayList<ItemObject>();
            posts = Arrays.asList(mGson.fromJson(response, ItemObject[].class));
            adapter = new RecyclerViewAdapter(getActivity(), posts);
            recyclerView.setAdapter(adapter);
        }
    }, new Response.ErrorListener() {
        @Override
        public void onErrorResponse(VolleyError error) {
            Log.d(TAG, "Error " + error.getMessage());
        }
    });
    queue.add(stringRequest);
}

这里是Itemobject.java

public class ItemObject {
@SerializedName("store_name")
private String store_name;
@SerializedName("store_textposition")
private String store_textposition;
@SerializedName("store_view")
private String store_view;
@SerializedName("_id")
private String _id;
public ItemObject(String store_name, String store_textposition, String store_view, String _id) {
    this.store_name = store_name;
    this.store_textposition = store_textposition;
    this.store_view = store_view;
    this._id = _id;
}
public String getStore_name() {
    return store_name;
}
public String getStore_textposition() {
    return store_textposition;
}
public String getStore_view() {
    return store_view;
}
public String get_id(){
    return _id;
}

它出了什么问题?

1 个答案:

答案 0 :(得分:0)

您的响应以Object开头,但您曾用于转换数组。

修改

创建一个类。

Class Test
{
    @SerializedName("data")
    private List<ItemObject> data;
}

然后在解析时编写此代码:

        Gson mGson = builder.create();
        Test test=mGson.fromJson(response, Test.class)