首页 > 解决方案 > 改造 2:在没有 Java 8 的列表中解析数据结构

问题描述

我们正在开发一个 Android 应用程序,我的任务是解析一个如下所示的 json 数据结构:

[ [{pojo}], [{pojo}], [{pojo}], [{pojo}], ....]

如您所见,pojo 是我所需要的,但它被深埋了好几层(列表-> 列表-> 第 0 位)。

我们有minSDKVersion16 个,要使用steamAPI,我们必须将它提升到我们不想要的 API 24,而且我不想导入任何外部依赖项只是为了解决这个问题

当我第一次看到这个时,我看不出你为什么要像这样构造数据并且看不到任何真正的价值,但是由于在后端更改它需要很多时间,我只需要使这项工作。

说实话,我什至不知道从哪里开始,因为由于没有字段,我无法创建一个pojo来捕获列表,请帮助,谢谢

编辑

这是改造的接口方法:

@FormUrlEncoded
@POST("api/driverApi/driverSearchLoad.php")
Call<List<JobRequestSchema>> fetchJobRequestsHistory(
        @Field("driverEmail") String driverEmail);

每次用户请求时都会调用它,我遇到问题的原因是服务器的响应形式为:

[ [{POJO}], [{POJO}], [{POJO}], [{POJO}], .... ]

我应该怎么做才能提取出 POJO?

这是我的 POJO 课程:

public class JobRequestSchema {

    public JobRequestSchema(String companyName, String loadTitle, String pickUpAddress, String dropOffAddress, String details, String loadDescription, String amountOffered, String companyEmail, String timeStamp, String requestId) {
        this.companyName = companyName;
        this.loadTitle = loadTitle;
        this.pickUpAddress = pickUpAddress;
        this.dropOffAddress = dropOffAddress;
        this.details = details;
        this.loadDescription = loadDescription;
        this.amountOffered = amountOffered;
        this.companyEmail = companyEmail;
        this.timeStamp = timeStamp;
        this.requestId = requestId;
    }

    @SerializedName("id") private String id;
    @SerializedName("request_id") private String requestId;
    @SerializedName("business_name") private String companyName;
    @SerializedName("business_email") private String companyEmail;
    @SerializedName("title") private String loadTitle;
    @SerializedName("details") private String details;
    @SerializedName("load_description") private String loadDescription;
    @SerializedName("amount_offered") private String amountOffered;
    @SerializedName("pickup_address") private String pickUpAddress;
    @SerializedName("dropoff_address") private String dropOffAddress;
    @SerializedName("timestamp") private String timeStamp;

    // getters and setters....
}

标签: javaandroidretrofit

解决方案


Install the plugin in IntelliJ / Android Studio by opening Preferences -> Plugins -> Search for "Json2Pojo".
Right-click on the target package, select New -> "Generate POJOs from JSON".
Enter the root class name and enter your source JSON text.

我的建议是不要将您的数据上传到一些未知的远程网站。

并按照链接进行解析, https://www.javacodegeeks.com/2011/01/android-json-parsing-gson-tutorial.html


推荐阅读