首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Java Spring使用RestTemplate反序列化嵌套对象

Java Spring使用RestTemplate反序列化嵌套对象
EN

Stack Overflow用户
提问于 2020-05-24 05:10:14
回答 1查看 576关注 0票数 1

我正在使用Java Spring boot JSON,并且我正在尝试将下面的restTemplate反序列化为它们对应的对象。然而,它返回null。

我这样做是对的吗?我应该返回一个字符串响应实体,然后进行转换吗?

代码语言:javascript
运行
复制
{
  "Events": [
    {
      "Id": 3584588,
      "Url": "https://api.wildapricot.org/v2/accounts/257051/Events/3584588",
      "EventType": "Regular",
      "StartDate": "2019-10-07T07:00:00-05:00",
      "EndDate": "2019-10-11T12:00:00-05:00",
      "Location": "Renaissance Montgomery Hotel & Spa",
      "RegistrationEnabled": false,
      "RegistrationsLimit": null,
      "PendingRegistrationsCount": 0,
      "ConfirmedRegistrationsCount": 0,
      "CheckedInAttendeesNumber": 0,
      "InviteeStat": {
        "NotResponded": 0,
        "NotAttended": 0,
        "Attended": 0,
        "MaybeAttended": 0
      },
      "Tags": [
        "event"
      ],
      "AccessLevel": "AdminOnly",
      "StartTimeSpecified": true,
      "EndTimeSpecified": true,
      "HasEnabledRegistrationTypes": false,
      "Name": "2020 Montgomery IT Summit"
    },
    {
      "Id": 3584591,
      "Url": "https://api.wildapricot.org/v2/accounts/257051/Events/3584591",
      "EventType": "Rsvp",
      "StartDate": "2019-10-03T00:00:00-05:00",
      "EndDate": "2019-10-31T00:00:00-05:00",
      "Location": "Here",
      "RegistrationEnabled": true,
      "RegistrationsLimit": null,
      "PendingRegistrationsCount": 0,
      "ConfirmedRegistrationsCount": 0,
      "CheckedInAttendeesNumber": 0,
      "InviteeStat": {
        "NotResponded": 0,
        "NotAttended": 0,
        "Attended": 0,
        "MaybeAttended": 0
      },
      "Tags": [
        "volunteer"
      ],
      "AccessLevel": "Public",
      "StartTimeSpecified": false,
      "EndTimeSpecified": false,
      "HasEnabledRegistrationTypes": true,
      "Name": "Volunteer Event"
    }
 ]
}

这是我的电话:

代码语言:javascript
运行
复制
ResponseEntity<WaEvents> response = restTemplate.exchange(uri,
                HttpMethod.GET,
                request,
                WaEvents.class
        );

return response.getBody().getEvents();

下面是我的WaEvents类:

代码语言:javascript
运行
复制
@Data
public class WaEvents implements Serializable {

    @JsonUnwrapped
    @JsonProperty("Events")
    private List<WaEvent> events;
}

下面是WaEvent类

代码语言:javascript
运行
复制
@Data
@JsonIgnoreProperties(ignoreUnknown = true)
public class WaEvent {

    @JsonProperty("Id")
    public Integer id;

    @JsonProperty("Name")
    public String name;

    @JsonProperty("Location")
    public String location;

    @JsonProperty("StartDate")
    public LocalDate startDate;

    @JsonProperty("EndDate")
    public LocalDate endDate;

    @JsonProperty("IsEnabled")
    public Boolean isEnabled;

    @JsonProperty("Description")
    public String description;

    @JsonProperty("RegistrationLimit")
    public Integer RegistrationLimit;

}
EN

Stack Overflow用户

回答已采纳

发布于 2020-05-24 06:02:58

带有示例的As explained here

代码语言:javascript
运行
复制
public class Parent {
    public int age;
    public Name name;
}
public class Name {
    public String first, last;
}

如果没有@JsonUnwrapped,JSON就是:

代码语言:javascript
运行
复制
{
    "age" : 18,
    "name" : {
        "first" : "Joey",
        "last" : "Sixpack"
    }
}

对于@JsonUnwrapped,JSON是:

代码语言:javascript
运行
复制
{
    "age" : 18,
    "first" : "Joey",
    "last" : "Sixpack"
}

因此,@JsonUnwrapped将扁平化属性,events将不复存在:

代码语言:javascript
运行
复制
{
    "Id": 3584588,
    "Name": "2020 Montgomery IT Summit",
    "Location": "Renaissance Montgomery Hotel & Spa",
    "StartDate": "2019-10-07T07:00:00-05:00",
    "EndDate": "2019-10-11T12:00:00-05:00",
    ...
}

尝试删除@JsonUnwrapped

票数 1
EN
查看全部 1 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/61978616

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档