我正在android上使用Retrofit和Gson构建一个reddit客户端来发出API请求。我做了检索征求意见后Gson反序列化reddit评论android上的API响应
https://www.reddit.com/r/pics/comments/68pxct/black_out_panels_with_a_twist/.json
的请求虽然deserialising我遇到了一个问题的响应,响应有一个字段children
返回一个List<CustomObject>
有时等一个List<String>
倍。
我尝试了多个选项,使用JsonAdapter
与自定义JsonDeserializer
,没有工作,然后尝试使用它与TypeAdapter
,仍然没有工作。
我场是这样,
@Expose
@JsonAdapter(CustomDeserializer.class)
private List<T> children;
在这两种这些情况下,我打了,我用与泛型类的类未发现异常。我在Deserializer中有断点,它甚至没有开始执行代码。评论@JsonAdapter注释导致类未找到异常消失。
我然后试图接收PARAMS为通用JsonArray
型,但仍然遇到错误
@Expose
private JsonArray children;
所致:java.lang.IllegalStateException:预期BEGIN_OBJECT但在第1行的列210200路径STRING $ [1] .data.children [12] .data.replies
为什么我无法将它转换为JsonArray。我认为这应该工作,不管内在类型是什么。
理想情况下,我想让JsonAdapter方法工作。
编辑:
之所以将其转换为JsonArry没有工作是因为有另一场(replies
),这也返回了多个数据类型。这应该是显而易见的错误,我猜它已经过去了我的睡前时间。所以将字段转换为JsonArray和JsonObject。
也有人建议泛型不能很好地使用JsonAdapter注释,我会测试其他解决方案并更新回来。
的'答复'在你的数据中以JSON中的一个引号开始,而不是一个对象'{}' –
你可以在JSON中搜索'“回复”:“''' –
@ cricket_007确实,回复确实是这样开始的。但是因为我将子对象反序列化为一个JsonArray,这应该不重要? –