Как настроить класс домена, чтобы получить мой ответ от RestTemplate? - PullRequest
1 голос
/ 23 мая 2019

Я новичок в RestTemplate, поэтому я ищу некоторую помощь в создании класса домена, который получит ответ, используя RestTemplate.Структура JSON, которую я получаю, вызывая URL-адрес, выглядит следующим образом

[{
        "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 или более {}).Как я могу создать свою структуру, чтобы получить ответ?Я считаю, что мне нужен класс, который будет связываться со всей структурой (я буду называть его Принципалом)

, поэтому в моем сообщении будут указаны URL, тело и класс Principal.class

.....

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

Заранее спасибо!

1 Ответ

0 голосов
/ 24 мая 2019

Сделайте, как показано ниже, и небольшую модификацию в 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
...