Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/json/13.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
Android 应为BEGIN_数组,但在第1行第96列路径处为BEGIN_对象_Android_Json_Retrofit2 - Fatal编程技术网

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

Android 应为BEGIN_数组,但在第1行第96列路径处为BEGIN_对象,android,json,retrofit2,Android,Json,Retrofit2,这是我的json { "success": true, "error": null, "responseA": { "responseB": [{ "response": {...}, "request": "\/observations\/atlanta,ga" }, { "response": [{..

这是我的json

{
    "success": true,
    "error": null,
    "responseA": {
        "responseB": [{
                    "response": {...},
                    "request": "\/observations\/atlanta,ga"
                }, {
                    "response": [{...}],
                    "request": "\/forecasts\/atlanta,ga"
                },
                ...
            ]
    }
}
我从这里为json创建了我的类:

我发现标题的错误来自两个“响应”,即数组和对象

正如我所说I通过改型分析,如何通过改型2.0使用两种类型(数组和对象)的“repsonse”分析这样的json?谢谢~*

Retrofit retrofit = new Retrofit.Builder()
            .baseUrl(BASE_URL)
            .addConverterFactory(GsonConverterFactory.create())
            .addCallAdapterFactory(RxJavaCallAdapterFactory.create())
            .build();`
这是日志:

com.google.gson.JsonSyntaxException: java.lang.IllegalStateException: Expected BEGIN_ARRAY but was BEGIN_OBJECT at line 1 column 96 path $.response.responses[0].response
      at com.google.gson.internal.bind.ReflectiveTypeAdapterFactory$Adapter.read(ReflectiveTypeAdapterFactory.java:200)
      at com.google.gson.internal.bind.TypeAdapterRuntimeTypeWrapper.read(TypeAdapterRuntimeTypeWrapper.java:40)
      at com.google.gson.internal.bind.CollectionTypeAdapterFactory$Adapter.read(CollectionTypeAdapterFactory.java:81)
      at com.google.gson.internal.bind.CollectionTypeAdapterFactory$Adapter.read(CollectionTypeAdapterFactory.java:60)
      at com.google.gson.internal.bind.ReflectiveTypeAdapterFactory$1.read(ReflectiveTypeAdapterFactory.java:103)
      at com.google.gson.internal.bind.ReflectiveTypeAdapterFactory$Adapter.read(ReflectiveTypeAdapterFactory.java:196)
      at com.google.gson.internal.bind.ReflectiveTypeAdapterFactory$1.read(ReflectiveTypeAdapterFactory.java:103)
      at com.google.gson.internal.bind.ReflectiveTypeAdapterFactory$Adapter.read(ReflectiveTypeAdapterFactory.java:196)
      at com.google.gson.Gson.fromJson(Gson.java:810)
      at com.google.gson.Gson.fromJson(Gson.java:775)
      at retrofit.GsonResponseBodyConverter.convert(GsonResponseBodyConverter.java:36)
      at retrofit.GsonResponseBodyConverter.convert(GsonResponseBodyConverter.java:24)
      at retrofit.OkHttpCall.parseResponse(OkHttpCall.java:148)
      at retrofit.OkHttpCall.execute(OkHttpCall.java:116)
      at retrofit.ExecutorCallAdapterFactory$ExecutorCallbackCall.execute(ExecutorCallAdapterFactory.java:61)

您的json中存在错误:

响应B第一个对象具有响应对象,第二个对象具有响应数组。这造成了问题

{

"success":true,

"error":null,

"responseA":{

  "responseB":[  
     {  

        "response":{... ***// This is object***
              },
        "request":"\/observations\/atlanta,ga"
     },
     {  
        "response":[   ***// This is Array***
           { ...
              }
        ],
        "request":"\/forecasts\/atlanta,ga"
     },
... ]

} }
您已经为arrays对象创建了相同的结构。 希望这有帮助。
谢谢

请发布错误日志…就像我将响应从一个对象更改为一个数组一样,它会说需要一个arry但得到了一个对象…您的json以arryNormal json以{}个barces开始,数组json以[]个barces开始…您能修复格式吗?我看了一下,但是如果我编辑了它,那么你的一些信息可能会丢失,因为有一些模糊性。谢谢…谢谢您改进了我的json格式,但是我如何使用Reformation 2.0来分析json,它的“响应”有两种类型?对于这种情况,您必须手动解析,从Reformation获取JsonObject。然后通过检查它是json对象还是数组来解析它。。