java - 需要反序列化 json 格式的帮助

标签 java android json gson

我正在尝试获取用于反序列化的 Java 类: API Response 我正在使用http://www.jsonschema2pojo.org/获取我需要的java类。但是通过这个 json 响应我得到了这个:

public class CatalogueResponse {
 @SerializedName("0")
    @Expose
    private uex.asee.fjrm.multimediapp.api.pojos.catalogue._0 _0;
    @SerializedName("1")
    @Expose
    private uex.asee.fjrm.multimediapp.api.pojos.catalogue._1 _1;
    @SerializedName("2")
    @Expose
    private uex.asee.fjrm.multimediapp.api.pojos.catalogue._2 _2;
    @SerializedName("3")
    @Expose
    private uex.asee.fjrm.multimediapp.api.pojos.catalogue._3 _3;
    @SerializedName("4")
    @Expose
    private uex.asee.fjrm.multimediapp.api.pojos.catalogue._4 _4;
    @SerializedName("5")
    @Expose
    private uex.asee.fjrm.multimediapp.api.pojos.catalogue._5 _5;
    ...
}

但是json的项目数量是变化的,所以我不能那样处理。 顺便说一句,我正在使用 gson 注释。 有什么想法吗?

最佳答案

为什么不尝试使用 Map 然后序列化它。我建议使用 TreeMap 并添加数字作为键和值作为 Catalog 对象。像这样的东西:

Map<Integer, Catalogue> map = new TreeMap<>();
map.put(0, catalogue0);
map.put(1, catalogue1);
...
// Now serialize the map.

这将生成您需要的 API 响应。

要使用 Gson 反序列化它,请尝试以下操作:

Type mapType = new TypeToken<Map<Integer, Catalogue>>(){}.getType();
Map<Integer, Catalogue> catalogueMap = (Map<Integer, Catalogue>) gson.fromJson(json, mapType);

关于java - 需要反序列化 json 格式的帮助,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33721628/

相关文章:

java - Spring Boot项目创建bean出错

android - 在 fragment 中使用 Material 对话框

android - 如何在Android Studio中导入AndroidResideMenu?

java - JSON 在响应中返回空值

c# - C#读取json数据的方法

android - 在android中递归读取json对象递归?

java - 如何使用今天的日期传入文件名值属性

java - 为什么这个 Java 枚举代码无法编译?

java - 如何让 SLF4J 输出一些日志语句?

android - Firestore 实现通知 View