android - 使用 Retrofit 解析动态 key Json 字符串

标签 android json retrofit

我正在尝试解析以下动态 key Json 字符串。

"report":{
    "data":{
        "results":{
            "558952cca6d73d7d81c2eb9d":{
                "Max":-1,
                "Min":-1,
                "Slope":-1,
            },

            "558ce148a6d73d7d81c2fa8a":{
                "Max":-2,
                "Min":-1,
                "Slope":-2,
            }
        }
    }
}

以下我正在尝试获取数据,但在解析最后一个动态 json 字符串时出错。

 public class Report {
        @SerializedName("data")
        @Expose
        private Data data;

        public Data getData() {
            return data;
        }

        public void setData(Data data) {
            this.data = data;
        }

        @Override
        public String toString() {
            return "Report{" +
                    "data=" + data +
                    '}';
        }
    }

    public class Data {
        @SerializedName("results")
        @Expose
        private ResultInside result;

        public ResultInside getResult() {
            return result;
        }

        public void setResult(ResultInside result) {
            this.result = result;
        }
    }

    public class ResultInside {
        /*@SerializedName("results")
        @Expose*/
        private Map<String, Vitals> elemDetails = new HashMap<>();

        public Map<String, Vitals> getElemDetails() {
            return elemDetails;
        }

        public void setElemDetails(Map<String, Vitals> elemDetails) {
            this.elemDetails = elemDetails;
        }
    }

在这种情况下如何解析的任何建议!

最佳答案

您的 resultInside 类正在添加 JSON 中不存在的额外对象层。尝试将 map 移动到您的 Dataresults 字段。

public class Data {
    @SerializedName("results")
    @Expose
    private Map<String, Vitals> result;

    //....
}

关于android - 使用 Retrofit 解析动态 key Json 字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33758601/

相关文章:

android - 自定义布局 ListPreference

android - 替换 fragment 后,TextSwitcher 的 findViewById 返回 null

c# - 替换多个 JObject 中属性的 JSON 值

asp.net-mvc - 如何排除某些公共(public)属性被序列化为 JsonResult?

android - 如何使用Retrofit同时发送图像和文本

android - 如何在 Flutter 中保持应用程序在锁屏状态下运行?

android - 仅在应用程序升级时升级行

javascript - 如何使用 select 过滤 Google Maps API v.3 中 json 数据中的两个属性?

android - 如何在改造 API 方法中传递 POST 参数?

android - 如何为 Retrofit 配置调试和发布日志级别?