java - 如何设置域类以从 RestTemplate 获取响应?

标签 java json spring-boot resttemplate

我是 RestTemplate 新手,因此我正在寻求一些帮助来创建域类,该域类将使用 RestTemplate 获取响应。我调用 url 的 JSON 结构如下所示

[{
        "id": "2",
        "name": {
            "firstname": "John",
            "lastname": "Smith"
        },
        "address": {
            "street": "123 Main St",
            "city": "Perth",
            "state": "GA"
        }
    },
    {
        "child": {
            "info": {
                "firstname": "Bob",
                "age": "12"
            }
        }
    },
    {
        "child": {
            "info": {
                "firstname": "Jessica",
                "age": "22"
            }
        }
    },
    {
        "child": {
            "info": {
                "firstname": "Robert",
                "age": "9"
            }
        }
    },
    {
        "child": {
            "info": {
                "firstname": "Beth",
                "age": "9"
            }
        }
    }
]

我知道我需要创建类来处理结构 我为第一部分创建了一个类{}

class FirstPart {
  private String id;
  private String name;
  private String address;
}

然后其他部分重复(结构相同,我可以获得 0,1 或更多 {})。我如何创建我的结构才能获得响应?我相信我需要一个包含所有结构的类(我将其称为校长)

所以我的帖子将包括网址、正文和Principal.class

......

   RestTemplate restTemplate = new RestTemplate();
    Principal principal;
    principal= restTemplate.postForObject(url,requestBody,Principal.class);
    return principal

提前致谢!

最佳答案

按如下操作并对 JSON 进行小修改:

public class InfoDto{
    private String firstname;
    private Integer age; 

    //getters & setters
}

public class ChildDto{
    private InfoDto info;

    //getters & setters
}
public class AddressDto{
    private String street;
    private String city;
    private String state;

    //getters & setters
}

public class UserDetails{
    private String firstname;
    private String lastname;

    //getters & setters
}

public class RestResponseDto{
    private Long id;
    private UserDetails name;
    private AddressDto address;

    private List<ChildDto> childs;

    //getters & setters
}

JSON

[{
        "id": "2",
        "name": {
            "firstname": "John",
            "lastname": "Smith"
        },
        "address": {
            "street": "123 Main St",
            "city": "Perth",
            "state": "GA"
        }
    },
    childs:[{
        "child": {
            "info": {
                "firstname": "Bob",
                "age": "12"
            }
        }
    },
   ...............
    .............
    ...................
   ]
]

 RestTemplate restTemplate = new RestTemplate();
    RestResponseDto principal;
    principal= restTemplate.postForObject(url,requestBody,RestResponseDto.class);
    return principal

关于java - 如何设置域类以从 RestTemplate 获取响应?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56280414/

相关文章:

java - 如何使用 PBKDF2 在 Java 和 Ruby 中生成相同的安全哈希

Java Swing - 如何在 Mac 上双击项目文件以打开我的应用程序并加载文件?

php - MySQL 到 JSON,如何获得正确的格式?

json - 我收到来自 i18n aurelia 的错误

javascript - 如何从模板节点复制并填充 json 数据并使用 javascript 将它们附加到文档中?

java - 如何加快 Camel 路线

java - 如何返回 TreeMap 中包含的值的 TreeSet?

java - UBUNTU 13.04 GNOME_DESKTOP_SESSION_ID

spring-boot - 使用 Filebeat 将 Elastic ELK stack 8.5 与 Spring Boots 应用程序集成

java - 如何将 Spring Boot 项目连接到 SonarQube