当前位置: 首页 > 知识库问答 >
问题:

BEGIN_ARRAY,但BEGIN_OBJECT

巫马曜文
2023-03-14

我对GSON非常陌生,
几天前有人建议使用GSON,我在这里寻求一些帮助
我正在尝试分析此响应,但收到了所述错误。。

{
  "status": 4,
  "data": {
    "id": 15,
    "user_id": 1,
    "sub_contractor_id": 1,
    "battery_id": 1,
    "user_long": "120.8922933",
    "user_lat": "14.8185964",
    "rider_long": "121.029015",
    "rider_lat": "14.6496133",
    "user_address_location": "313 Bantayan St, Balagtas, 3016 Bulacan, Philippines",
    "complete": 1,
    "created_at": "2017-04-09 15:22:07",
    "updated_at": "2017-04-09 15:26:16",
    "deleted_at": null,
    "user": {
      "id": 1,
      "user_group_id": 3,
      "email": "customer@motolite.com",
      "created_at": null,
      "updated_at": null,
      "deleted_at": null
    },
    "battery": {
      "id": 1,
      "model": "Enduro",
      "size": "DIN44",
      "price": 2000,
      "created_at": null,
      "updated_at": null,
      "deleted_at": null
    }
  }
}

我只是得到了“状态”部分,但得到了错误。

private void fetchPosts() {
        StringRequest request = new StringRequest(Request.Method.POST, ENDPOINT, onPostsLoaded, onPostsError) {
            @Override
            protected Map<String, String> getParams() throws AuthFailureError {
                Map<String, String> params = new HashMap<>();
                params.put("booking_id", "15");
                return params;
            }
        };

        requestQueue.add(request);
    }

    private final Response.Listener<String> onPostsLoaded = new Response.Listener<String>() {
        @Override
        public void onResponse(String response) {
            Log.e("TAG", response);
            List<ModelBooking> posts = Arrays.asList(gson.fromJson(response, ModelBooking[].class));
            for (ModelBooking post : posts) {
                Log.e("TAG", post.status);
            }
        }
    };

    private final Response.ErrorListener onPostsError = new Response.ErrorListener() {
        @Override
        public void onErrorResponse(VolleyError error) {
            Log.e("TAG", error.toString());
        }
    };  

对我的模特来说。

public class ModelBooking {
    @SerializedName("status")
    String status;
}  

共有1个答案

郭弘方
2023-03-14

您的JSON字符串是一个对象(它以{开头),而不是一个数组(以[开头)。所以你的代码会这样:

private final Response.Listener<String> onPostsLoaded = new Response.Listener<String>() {
    @Override 
    public void onResponse(String response) {
        Log.e("TAG", response);
        ModelBooking post = gson.fromJson(response, ModelBooking.class));
        Log.e("TAG", post.status);
    }  
}; 
 类似资料:
  • 我正在尝试从XML文件中提取数据。将XML转换为JSON后,我无法访问数据。我正在用GSON解析数据。 这段代码给了我一个错误。 有什么建议吗?提前谢谢。 这是JSON内容: 这是以下类:

  • 我的Retrofit2调用出现以下异常: 学分类别:

  • 我正在通过改型和RXAndroid与来自android的REST API进行交互,我遇到了一个问题。 当我向我的“api/users/{id}/{id}/classes”发送GET请求时,我的api会以用户类列表作出响应,如下所示: 我的界面如下所示: 我从片段中这样称呼它: 我的类对象以及getter和setter如下所示: gson不应该看到“类”:[]数组并从中解析对象吗?我做错了什么

  • 我不知道该修好它 我怎么了? 我的json是 E/DDD:onFailure:java.lang.IllegalStateException:应为BEGIN_ARRAY,但在第1行第44列路径$.data处为BEGIN_OBJECT 有什么问题?谢谢!

  • 问题内容: 我在列表中仅收到一个项目时收到此错误。我在服务器端REST Web服务中使用Jersey,当List返回一个元素并且当我得到它时,我仅收到错误,但是当它包含多个元素时,它可以正常工作,这就是我的工作方式它: 为什么Jersey不发送包含一个项目的列表?这是球衣的虫子吗?有没有办法使它始终序列化为数组? 当Web服务返回0元素时,这是我的JSON数据: 当Web服务返回1元素时,这是我的