Java 修改JSON错误解析错误
当我试图解析下面的JSON响应时,改型给了我这个错误 生的 漂亮的 应为BEGIN_数组,但在第1行第2列路径处为BEGIN_对象$ 有什么帮助吗?Java 修改JSON错误解析错误,java,android,json,parsing,retrofit,Java,Android,Json,Parsing,Retrofit,当我试图解析下面的JSON响应时,改型给了我这个错误 生的 漂亮的 应为BEGIN_数组,但在第1行第2列路径处为BEGIN_对象$ 有什么帮助吗? 谢谢将您的手机课程作为列表放入另一个课程中: public class Root { private List<Phone> phone; //getters and setters here } 公共类根目录{ 私人名单电话; //这里有接球手和接球手 } 并更改此行: Call<List<Phone>&g
谢谢将您的手机课程作为列表放入另一个课程中:
public class Root {
private List<Phone> phone;
//getters and setters here
}
公共类根目录{
私人名单电话;
//这里有接球手和接球手
}
并更改此行:
Call<List<Phone>> getPhoneInfo(@Field("device") String device);
调用getPhoneInfo(@Field(“device”)字符串设备);
到
调用getPhoneInfo(@Field(“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) {
}
});
ApiServiceClient.getApiService().yourFunctionName().enqueue(新回调(){
@凌驾
公共响应(响应、改装){
试一试{
String jsonString=response.body().String();
Log.e(标记“onResponse:+response.body().string());
//在这里解析json
}捕获(IOE异常){
e、 printStackTrace();
}
}
@凌驾
失效时的公共无效(可丢弃的t){
}
});
与@Rashid提到的不一样-“响应没有任何数组名称”是的,我错过了那部分谢谢你的解释,是使用改型而不是手动解析它的任何方法。到目前为止,改型还没有提供任何解决方案。根据改型和谷歌文档,使用和对象启动json并将数组与其数组名放在一起是一种标准方法。另一种方法是手动解析此方法-[{“id”:3,“name”:“AA”},{“id”:1,“name”:“BB”},{“id”:2,“name”:“CC”},{“id”:4,“name”:“DD”}]\\\@GET(“/v1/areas/”)调用getAreas();但是为什么另一个不起作用呢???
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);
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) {
}
});