Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Java Новый топик    Ответить
 Как вернуть ответ в JSON формате  [new]
skyboyy
Member

Откуда:
Сообщений: 70
Всем привет я написал проект. Который возвращает инфу о домене.
Так вот он у меня его возвращает через терминал вот так
C:\Users\Sky>curl -H "Content-Type: application/json" -d "{\"domain\":\"amazon.kz\"}" localhost:8080/api/whois
Domain Name............: amazon.kz

Organization Using Domain Name
Name...................: Amazon.com, Inc.
Organization Name......: Amazon.com, Inc.
Street Address.........: Legal Dept. P.O. Box 81226
City...................: Seattle WA
State..................:
Postal Code............: 98108
Country................: US

Administrative Contact/Agent
Nick Handle............: HOSTERKZ-76523
Phone Number...........: +1.2062664064
Fax....................: +1.2062667010
Email Address..........: admin@internationaladmin.com

Nameserver in listed order

Server.................: 3783652
Ip address.............: 185.98.6.6
Server.................: 3783652
Ip address.............: 104.131.219.250
Server.................: 3783652
Ip address.............: 92.38.225.176

Domain created: 1998-01-02 12:31:33
Last modified: 2013-03-16 10:52:31
Domain status: KAZNIC
Registrar created: HOSTER.KZ
Current Registrar: clientDeleteProhibited
Domain created: 1998-01-02 12:31:33
Last modified: 2013-03-16 10:52:31
Domain status: KAZNIC
Registrar created: HOSTER.KZ
Current Registrar: clientTransferProhibited


Но мне нужно его вернуть в JSON формате, можете помочь
Вот мой код

@RestController
@RequestMapping("api/whois")
public class DomainWhoIsController {

    @Autowired
    DomainRepository domainRepository;

    @Autowired
    ContactsRepository contactsRepository;

    @Autowired
    HostRepository hostRepository;

    @Autowired
    StatusRepository statusRepository;

    @PostMapping
    public String whoIs(@RequestBody Request request) {
        System.out.println(request);
        DomainInfo domainInfo = domainRepository.findDomainInfo(request.getDomain());
        ContactInfo contactInfo = contactsRepository.findContactInfo(request.getDomain());
        List<HostInfo> hostInfo = hostRepository.findHostInfo(request.getDomain());
        List<StatusInfo> statusInfo = statusRepository.findStatusInfo(request.getDomain());

        return report(domainInfo, contactInfo, hostInfo, statusInfo);
    }

    private String report(DomainInfo domainInfo, ContactInfo contactInfo, List<HostInfo> hostInfo, List<StatusInfo> statusInfo) {
        StringBuffer sb = new StringBuffer();
        sb
                .append("Domain Name............: ").append(domainInfo.getDomainName()).append(System.lineSeparator())
                .append(System.lineSeparator())
                .append("Organization Using Domain Name").append(System.lineSeparator())
                .append("Name...................: ").append(domainInfo.getName()).append(System.lineSeparator())
                .append("Organization Name......: ").append(domainInfo.getOrganizationName()).append(System.lineSeparator())
                .append("Street Address.........: ").append(domainInfo.getStreetAddress()).append(System.lineSeparator())
                .append("City...................: ").append(domainInfo.getCity()).append(System.lineSeparator())
                .append("State..................: ").append(domainInfo.getState()).append(System.lineSeparator())
                .append("Postal Code............: ").append(domainInfo.getPostalCode()).append(System.lineSeparator())
                .append("Country................: ").append(domainInfo.getCountry()).append(System.lineSeparator())
                .append(System.lineSeparator())
                .append("Administrative Contact/Agent").append(System.lineSeparator())
                .append("Nick Handle............: ").append(contactInfo.getHandle()).append(System.lineSeparator())
                .append("Phone Number...........: ").append(contactInfo.getVoice()).append(System.lineSeparator())
                .append("Fax....................: ").append(contactInfo.getFax()).append(System.lineSeparator())
                .append("Email Address..........: ").append(contactInfo.getEmail()).append(System.lineSeparator())
                .append(System.lineSeparator())
                .append("Nameserver in listed order").append(System.lineSeparator())
                .append(System.lineSeparator());

        hostInfo.forEach(hInfo -> sb
                .append("Server.................: ").append(hInfo.getDomain()).append(System.lineSeparator())
                .append("Ip address.............: ").append(hInfo.getIpaddr()).append(System.lineSeparator())
        );

        sb.append(System.lineSeparator());

        statusInfo.forEach(sInfo -> sb
                .append("Domain created: ").append(sInfo.getCreated()).append(System.lineSeparator())
                .append("Last modified: ").append(sInfo.getUpdated()).append(System.lineSeparator())
                .append("Domain status: ").append(sInfo.getStatus()).append(System.lineSeparator())
                .append("Registrar created: ").append(sInfo.getRegistarcr()).append(System.lineSeparator())
                .append("Current Registrar: ").append(sInfo.getRegistrar()).append(System.lineSeparator())
        );

        return sb.toString();
    }
}
31 окт 19, 07:03    [22006692]     Ответить | Цитировать Сообщить модератору
 Re: Как вернуть ответ в JSON формате  [new]
mad_nazgul
Member

Откуда:
Сообщений: 4926
skyboyy,

Возвращайте объект. Spring сам автоматом преобразует в JSON.
Можно еще указать аннотацию @ResponseBody
31 окт 19, 08:29    [22006716]     Ответить | Цитировать Сообщить модератору
 Re: Как вернуть ответ в JSON формате  [new]
lleming
Member

Откуда:
Сообщений: 1654
еще помочь можно спрингу указать что результат
@RequestMapping(path="api/whois", produces=MediaType.APPLICATION_JSON_VALUE)
31 окт 19, 10:21    [22006833]     Ответить | Цитировать Сообщить модератору
 Re: Как вернуть ответ в JSON формате  [new]
asv79
Member

Откуда: Тверь
Сообщений: 2732
Сделать DTO с нужными полями и отдавать по запросу ,как выше написали спринг сам все сделает ,нужно лишь зависимость нужную подключить

<dependency>
			<groupId>com.jayway.jsonpath</groupId>
			<artifactId>json-path</artifactId>
		</dependency>
31 окт 19, 10:44    [22006865]     Ответить | Цитировать Сообщить модератору
 Re: Как вернуть ответ в JSON формате  [new]
PetroNotC Sharp
Member

Откуда:
Сообщений: 2481
asv79,
Я тебя уже спрашивал однажды.
Зависимость это либа.
Из коробки без либы спринг не умеет?
31 окт 19, 11:00    [22006891]     Ответить | Цитировать Сообщить модератору
 Re: Как вернуть ответ в JSON формате  [new]
andreykaT
Member

Откуда:
Сообщений: 2432
...еще и какая то хай-вай либа непонятная. да.
31 окт 19, 11:02    [22006894]     Ответить | Цитировать Сообщить модератору
 Re: Как вернуть ответ в JSON формате  [new]
PetroNotC Sharp
Member

Откуда:
Сообщений: 2481
andreykaT
...еще и какая то хай-вай либа непонятная. да.
у нас на работе вообше либы "из интернета" не приветствуются)). Согласовывать надо.
31 окт 19, 11:04    [22006897]     Ответить | Цитировать Сообщить модератору
 Re: Как вернуть ответ в JSON формате  [new]
вадя
Member

Откуда: Екатеринбург
Сообщений: 16799
PetroNotC Sharp
у нас на работе вообше либы "из интернета" не приветствуются)). Согласовывать надо.
с сайта оракла - тоже из инета?
31 окт 19, 11:18    [22006919]     Ответить | Цитировать Сообщить модератору
 Re: Как вернуть ответ в JSON формате  [new]
PetroNotC Sharp
Member

Откуда:
Сообщений: 2481
вадя,
Сравнил сайт оракла с сайтом куда вадя либу пишет)))
31 окт 19, 11:26    [22006928]     Ответить | Цитировать Сообщить модератору
 Re: Как вернуть ответ в JSON формате  [new]
asv79
Member

Откуда: Тверь
Сообщений: 2732
andreykaT
...еще и какая то хай-вай либа непонятная. да.

https://www.baeldung.com/guide-to-jayway-jsonpath
31 окт 19, 11:28    [22006935]     Ответить | Цитировать Сообщить модератору
 Re: Как вернуть ответ в JSON формате  [new]
PetroNotC Sharp
Member

Откуда:
Сообщений: 2481
asv79
andreykaT
...еще и какая то хай-вай либа непонятная. да.

https://www.baeldung.com/guide-to-jayway-jsonpath
в топике не нужна либа поиска в json. Как у тебя в прошлом проекте.
31 окт 19, 11:32    [22006939]     Ответить | Цитировать Сообщить модератору
 Re: Как вернуть ответ в JSON формате  [new]
asv79
Member

Откуда: Тверь
Сообщений: 2732
PetroNotC Sharp
asv79
пропущено...

https://www.baeldung.com/guide-to-jayway-jsonpath
в топике не нужна либа поиска в json. Как у тебя в прошлом проекте.

аа упс неправильно прочитал шо автор хочет,тогда да - отправлять то json спринг может своими силами
31 окт 19, 12:44    [22007048]     Ответить | Цитировать Сообщить модератору
 Re: Как вернуть ответ в JSON формате  [new]
skyboyy
Member

Откуда:
Сообщений: 70
asv79,

Я парился, но получилось -

curl -H "Content-Type: application/json" -d "{\"domain\":\"nic.kz\"}" localhost:8080/api/whois
{"domainInfo":{"domainName":"nic.kz","name":"KazNIC","organizationName":"KazNIC","streetAddress":"Ilyashev str. 47/2","city":"Semey","state":"VKO","postalCode":"071400","country":"KZ"},"contactInfo":{"handle":"PG134","name":"nic.kz","voice":"+77222600006","fax":"+77222604740","email":"pg@nic.kz"},"hostInfo":[{"oid":"10377768","name":"ns2.nic.kz","domain":"nic.kz","ipaddr":"80.241.0.81","pver":"v4"},{"oid":"10377949","name":"ns.nic.kz","domain":"nic.kz","ipaddr":"194.0.21.5","pver":"v4"}],"statusInfo":[{"created":"1999-08-18 03:34:57","updated":"1999-08-18 03:34:57","status":"KAZ","registarcr":"KAZ","registrar":"ok"}]}
31 окт 19, 13:14    [22007089]     Ответить | Цитировать Сообщить модератору
Все форумы / Java Ответить