簡體   English   中英

改進JSON錯誤解析錯誤

[英]Retrofit JSON Error parsing error

當我嘗試解析以下JSON響應時,Retrofit給了我這個錯誤

生的

[{"DeviceName":"Samsung Galaxy A5","Brand":"Samsung"...},{"DeviceName":"Samsung Galaxy A5 Duos"... ...]

漂亮 JSON數據

預期BEGIN_ARRAY但在第1行第2列路徑$為BEGIN_OBJECT

@FormUrlEncoded
@PATCH("/v1/getphone/")
Call<List<Phone>> getPhoneInfo(@Field("device") String device);

Java類

public class Phone {
@SerializedName("DeviceName")
@Expose
public String DeviceName;
@SerializedName("Brand")
@Expose
public String Brand;
@SerializedName("technology")
@Expose
public String technology;
....

有幫助嗎? 謝謝

將您的Phone類作為列表放在另一個類中:

public class Root {

private List<Phone> phone;

//getters and setters here
}

並改變這一行:

Call<List<Phone>> getPhoneInfo(@Field("device") String device);

Call<Root> getPhoneInfo(@Field("device") String device);

在改造中你需要一個數組名來創建一個類。你的json是有效的,但響應沒有任何數組名,所以它不能以這種方式解析。你必須通過獲取json字符串手動解析它從你在這方面的改造中的回應

  ApiServiceClient.getApiService().yourFunctionName().enqueue(new Callback<ResponseBody>() {
            @Override
            public void onResponse(Response<ResponseBody> response, Retrofit retrofit) {
                try {
                    String jsonString=response.body().string();
                    Log.e(TAG, "onResponse: "+response.body().string());
                     //Parse your json here
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }

            @Override
            public void onFailure(Throwable t) {

            }
        });

暫無
暫無

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

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