Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/190.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 修改JSON错误解析错误_Java_Android_Json_Parsing_Retrofit - Fatal编程技术网

Java 修改JSON错误解析错误

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

当我试图解析下面的JSON响应时,改型给了我这个错误

生的

漂亮的

应为BEGIN_数组,但在第1行第2列路径处为BEGIN_对象$

有什么帮助吗?
谢谢

将您的手机课程作为列表放入另一个课程中:

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) {

            }
        });