繁体   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