【问题标题】:Mapping a response to a class in Java将响应映射到 Java 中的类
【发布时间】:2018-01-25 14:49:54
【问题描述】:

我正在开发新功能。 我想获取允许检索特定端点数据的国家/地区。 请求返回此响应

{
    "response": {
        "mobile_web": {
                "countries": {
                    "at": {
                    "start_date": "2014-12",
                    "end_date": "2017-12",
                    "fresh_data": "2018-01-23"
                },
                "br": {
                    "start_date": "2014-12",
                    "end_date": "2017-12",
                    "fresh_data": "2018-01-23"
                },
                "id": {
                    "start_date": "2014-12",
                    "end_date": "2017-12",
                    "fresh_data": "2018-01-23"
                },
                "il": {
                    "start_date": "2014-12",
                    "end_date": "2017-12",
                    "fresh_data": "2018-01-23"
                },
                "in": {
                    "start_date": "2014-12",
                    "end_date": "2017-12",
                    "fresh_data": "2018-01-23"
                },
                "it": {
                    "start_date": "2014-12",
                    "end_date": "2017-12",
                    "fresh_data": "2018-01-23"
                },
                "jp": {
                    "start_date": "2014-12",
                    "end_date": "2017-12",
                    "fresh_data": "2018-01-23"
                },
                "ph": {
                    "start_date": "2014-12",
                    "end_date": "2017-12",
                    "fresh_data": "2018-01-23"
                },
                "pl": {
                    "start_date": "2014-12",
                    "end_date": "2017-12",
                    "fresh_data": "2018-01-23"
                },
                "pt": {
                    "start_date": "2014-12",
                    "end_date": "2017-12",
                    "fresh_data": "2018-01-23"
                },
                "ru": {
                    "start_date": "2014-12",
                    "end_date": "2017-12",
                    "fresh_data": "2018-01-23"
                },
                "th": {
                    "start_date": "2014-12",
                    "end_date": "2017-12",
                    "fresh_data": "2018-01-23"
                },
                "tr": {
                    "start_date": "2014-12",
                    "end_date": "2017-12",
                    "fresh_data": "2018-01-23"
                },
                "us": {
                    "start_date": "2014-12",
                    "end_date": "2017-12",
                    "fresh_data": "2018-01-23"
                },
                "world": {
                    "start_date": "2014-12",
                    "end_date": "2017-12",
                    "fresh_data": "2018-01-23"
                }
            }
        }
    }
}

我正在尝试将其映射到此类:

@JsonIgnoreProperties(ignoreUnknown = true)
    public static class ReportResponse {

        @JsonProperty("response")
        public Result response;

        @JsonIgnoreProperties(ignoreUnknown = true)
        public static class Result {
            private Map<String, Object> result = new HashMap<>();

            @JsonAnyGetter
            public Map<String, Object> any() {
                return result;
            }

            @JsonAnySetter
            public void set(String name, Object value) {
                result.put(name, value);
            }
        }
    }

发送请求和接收响应的行是:

ReportResponse report = executeRequest(url, ReportResponse.class);

结果是: result

现在,我怎样才能将国家地图作为报告?

【问题讨论】:

    标签: java spring annotations


    【解决方案1】:

    问题在于内部类。将Result 设为单独的类而不是内部类。一切都应该正常工作。还有为什么 ReportResponse 是静态的?它在其他班级内吗?如果没有错。

    如果你需要使用内部类,那么你应该使用

    @JsonAutoDetect(fieldVisibility = ANY) 在你的内部类中

    并确保所有字段都有适当的 getter 和 setter。

    【讨论】:

      猜你喜欢
      • 2020-09-13
      • 2021-10-13
      • 2017-08-30
      • 1970-01-01
      • 1970-01-01
      • 2019-07-22
      • 2016-03-19
      • 2018-02-06
      • 2020-01-01
      相关资源
      最近更新 更多