簡體   English   中英

如何解決此錯誤 Expected BEGIN_ARRAY but was BEGIN_OBJECT at line 1 column 2 path $

[英]How do I solve this error Expected BEGIN_ARRAY but was BEGIN_OBJECT at line 1 column 2 path $

我正在開發一個帶有 django restframework 后端的項目,我已經完成了后端並測試了它是否正常工作,但現在我想將我的 android 應用程序連接到 API,但此時我想獲取這個響應在此處輸入圖像描述 成功注冊並獲取一些數據以在下一個活動中使用后,盡管數據已保存在數據庫中,但我遇到錯誤

這是我的 APIClient 接口 class

package com.example.covid_19_tracker.data.network;
import com.example.covid_19_tracker.data.network.model.AddLocationResponse;
import com.example.covid_19_tracker.data.network.model.LoginResponse;
import com.example.covid_19_tracker.data.network.model.RegisterDeviceResponse;
import com.example.covid_19_tracker.data.network.model.RegisterUserResponse;

import java.util.HashMap;

import io.reactivex.Observable;
import retrofit2.http.FieldMap;
import retrofit2.http.FormUrlEncoded;
import retrofit2.http.POST;

public interface ApiInterface {

    @FormUrlEncoded
    @POST("api/locations/")
    Observable<AddLocationResponse> addLocation(@FieldMap HashMap<String, Object> params);

    @FormUrlEncoded
    @POST("api/devices/")
    Observable<RegisterDeviceResponse> registerDevice(@FieldMap HashMap<String, Object>   params);

    @FormUrlEncoded
    @POST("api/accounts/register/")
    Observable<RegisterUserResponse> registerUser(@FieldMap HashMap<String, Object> params);

    @FormUrlEncoded
    @POST("api/accounts/login/")
    Observable<LoginResponse> loginUser(@FieldMap HashMap<String, Object> params);
}

這是我的 RegisterUserResponse.java model Class

package com.example.covid_19_tracker.data.network.model;

import com.google.gson.annotations.Expose;
import com.google.gson.annotations.SerializedName;

import java.util.ArrayList;

public class RegisterUserResponse {
    @SerializedName("success")
    @Expose
    private String success;
    @SerializedName("status_code")
    @Expose
    private Integer status_code;
    @SerializedName("message")
    @Expose
    private String message;
    @SerializedName("data")
    @Expose
    private ArrayList data = new ArrayList();
    @SerializedName("token")
    @Expose
    private String token;

    public RegisterUserResponse() {
    }

    public String getSuccess() {
        return success;
    }

    public void setSuccess(String success) {
        this.success = success;
    }

    public Integer getStatus_code() {
        return status_code;
    }

    public void setStatus_code(Integer status_code) {
        this.status_code = status_code;
    }

    public String getMessage() {
        return message;
    }

    public void setMessage(String message) {
        this.message = message;
    }

    public ArrayList getData() {
        return data;
    }

    public void setData(ArrayList data) {
        this.data = data;
    }

    public String getToken() {
        return token;
    }

    public void setToken(String token) {
        this.token = token;
    }
}

但我收到錯誤Expected BEGIN_ARRAY but was BEGIN_OBJECT at line 1 column 2 path $我是 android 的初學者。 謝謝

您的數據字段不是您在RegisterUserResponse class 中指定的 ArrayList

您需要創建一個包含Data id username password ...

然后在您的RegisterUserResponse class 中您將聲明:

@SerializedName("data")
    @Expose
    private Data data;

代替:

@SerializedName("data")
    @Expose
    private ArrayList data = new ArrayList();

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM