【问题标题】:How to create POJO class for retrofit with dynamic keys names如何使用动态键名创建 POJO 类进行改造
【发布时间】:2018-12-08 23:52:33
【问题描述】:

我很抱歉,但我什至无法很好地表达这个问题,但它就是这样。 我收到这样的 JSON 响应:

{
    "results": {
        "b2bc01": [{
            "message": "Successfully created",
            "_id": "596c8b25ce2350e41600002f",
            "status": "Success",
            "code": 200
        }],
        "b2bc02": [{
            "message": "Successfully created",
            "_id": "596c8b25ce2350e416000030",
            "status": "Success",
            "code": 200
        }]
        .
        .
        .
        "b2bc0n":[{
            "message": "Successfully created",
            "_id": "596c8b25ce2350e416000030",
            "status": "Success",
            "code": 200
            }]
    }
}

如何为这种类型的 JSON 创建 POJO 类。我在 jsonschema2pojo 中尝试过,但我觉得它不是一个好结果。 请帮忙。提前致谢

【问题讨论】:

  • jsonschema2pojo 的输出总是为我服务。问题是,你选对了吗?

标签: android retrofit retrofit2 jsonschema2pojo dynamic-keyword


【解决方案1】:

您的 POJO 文件

class MyPojo {
    HashMap<String, ArrayList<MyModel>> results;

    class MyModel {
        String message;
        String _id;
        String status;
        int code;
    }

【讨论】:

    【解决方案2】:

    您只能对这些数据使用 pojo:

    [{
                "message": "Successfully created",
                "_id": "596c8b25ce2350e41600002f",
                "status": "Success",
                "code": 200
            }]
    

    如果你使用retrofit 2和gson,我推荐你使用接口JsonDeserializer

    使用 .registerTypeAdapter()

    例子

    Gson gson = new GsonBuilder()
                                .excludeFieldsWithoutExposeAnnotation()
                                .registerTypeAdapter(GpcProductDetail.class, new GpcProductDeserializer())
                                .create();
    

    并手动解析 json 的那部分。

    【讨论】:

      猜你喜欢
      • 2017-12-04
      • 1970-01-01
      • 2011-10-30
      • 1970-01-01
      • 2016-08-08
      • 2021-12-18
      • 2018-05-16
      • 2020-05-23
      • 1970-01-01
      相关资源
      最近更新 更多