预计BEGIN_ARRAY但BEGIN_OBJECT在行1列96路
问题描述:
这是我的JSON预计BEGIN_ARRAY但BEGIN_OBJECT在行1列96路
{
"success": true,
"error": null,
"responseA": {
"responseB": [{
"response": {...},
"request": "\/observations\/atlanta,ga"
}, {
"response": [{...}],
"request": "\/forecasts\/atlanta,ga"
},
...
]
}
}
我创造我的课从这里JSON: http://www.jsonschema2pojo.org/
,我觉得标题的误差从数组和对象的两个“响应”。
正如我所说的通过Retrofit来分析,我如何用Retrofit2.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:
responseB第一对象具有响应对象和第二对象有响应阵列。这是创建问题
{
"success":true,
"error":null,
"responseA":{
"responseB":[
{
"response":{... ***// This is object***
},
"request":"\/observations\/atlanta,ga"
},
{
"response":[ ***// This is Array***
{ ...
}
],
"request":"\/forecasts\/atlanta,ga"
},
... ]
} }
您已经为数组对象创建了相同的结构。 希望得到这个帮助。 感谢
+1
感谢您改进我的json格式,但是如何使用Retrofit 2.0分析“响应”有两种类型的json? – JoeKevin
+0
对于这种情况,您必须手动解析,从Retrofit中获取JsonObject。然后解析它,检查它是否是json对象或数组。 –
请张贴错误的logcat .... – sushildlh
好像我改变从对象数组我的反应,它会说需要一个ARRY却得到了一个对象.... – JoeKevin
您的JSON开始与arrya – sushildlh