android - 使用 Retrofit 如何在没有对象解析的情况下解析 JSONArray?

标签 android json gson retrofit2

我正在解析以下 Json 格式:

{
msg: "success",
status_code: 200,
data: [
{
....
}  ]
}

我在以下对象中使用 Retorfit2 解析它:

public class Model {
    @SerializedName("status_code")
    int statusCode;
    @SerializedName("msg")
    private String statusMsg;
    @SerializedName("data")
    private JSONArray data;

}

我想将“数据”解析为 JSONArray 而不是特定的模型类型,而不管其内部对象结构如何。但是它给出了以下异常,问题是什么?

  W/System.err: com.google.gson.JsonSyntaxException: java.lang.IllegalStateException: Expected BEGIN_OBJECT but was BEGIN_ARRAY at line 1 column 44 path $.data
W/System.err:     at com.google.gson.internal.bind.ReflectiveTypeAdapterFactory$Adapter.read(ReflectiveTypeAdapterFactory.java:224)
W/System.err:     at com.google.gson.internal.bind.ReflectiveTypeAdapterFactory$1.read(ReflectiveTypeAdapterFactory.java:129)
W/System.err:     at com.google.gson.internal.bind.ReflectiveTypeAdapterFactory$Adapter.read(ReflectiveTypeAdapterFactory.java:220)
W/System.err:     at retrofit2.converter.gson.GsonResponseBodyConverter.convert(GsonResponseBodyConverter.java:37)
W/System.err:     at retrofit2.converter.gson.GsonResponseBodyConverter.convert(GsonResponseBodyConverter.java:25)
W/System.err:     at retrofit2.ServiceMethod.toResponse(ServiceMethod.java:117)
W/System.err:     at retrofit2.OkHttpCall.parseResponse(OkHttpCall.java:211)
W/System.err:     at retrofit2.OkHttpCall$1.onResponse(OkHttpCall.java:106)
W/System.err:     at okhttp3.RealCall$AsyncCall.execute(RealCall.java:133)
W/System.err:     at okhttp3.internal.NamedRunnable.run(NamedRunnable.java:32)
W/System.err:     at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1133)
W/System.err:     at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:607)
W/System.err:     at java.lang.Thread.run(Thread.java:761)
W/System.err: Caused by: java.lang.IllegalStateException: Expected BEGIN_OBJECT but was BEGIN_ARRAY at line 1 column 44 path $.data
W/System.err:     at com.google.gson.stream.JsonReader.beginObject(JsonReader.java:385)
W/System.err:     at com.google.gson.internal.bind.ReflectiveTypeAdapterFactory$Adapter.read(ReflectiveTypeAdapterFactory.java:213)
W/System.err:   ... 12 more

最佳答案

看看下面的代码行。

`

public class Model {
    @SerializedName("status_code")
    int statusCode;
    @SerializedName("msg")
    private String statusMsg;
    @SerializedName("data")
    private **ArrayList<JSONObject>** data;

}

`

关于android - 使用 Retrofit 如何在没有对象解析的情况下解析 JSONArray?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42201883/

相关文章:

javascript - 如何使用带有点的字符串作为属性层次结构来形成嵌套的 javascript 对象

java - 使用 Gson-extras 反序列化带有 transient 变量的多态 JSON

javascript - Gson.fromJson 卡在线上

android - BottomNavigationView 膨胀错误。资源 $NotFoundException : Resource ID #0x0

android - 三星 S6 上的 UnsatisfiedLinkError

android - 自更新到 sdk 3.2.2 以来 map 质量不佳

android - OkHttpClient 有时会收到不完整的 json 响应

android - 视频播放器(Chewie Controller)正在播放所有不在观看范围内的视频-Flutter Android

JQUERY AJAX 数据溢出父元素

java - Gson 没有序列化值