【发布时间】:2016-04-22 08:04:39
【问题描述】:
这是我的json
{
"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)
【问题讨论】:
-
请发布错误 logcat ....
-
好像我将响应从对象更改为数组,它会说需要一个数组但得到一个对象....
-
你的 json 以 arrya 开头
-
普通 json 以 { } barces 开头,数组 json 以 [ ] barces ....
-
你能修正你的格式吗?我看了看,但如果我编辑它,那么你的一些故意可能会丢失,因为有一些歧义。谢谢...