Отображение содержимого ArrayList в правильно отформатированный JSON для Java-джерси REST API - PullRequest
0 голосов
/ 07 мая 2018

Я создаю Restful API, который будет отправлять ответ в формате JSON. Данные, которые я хочу отправить, находятся в arrayList. Кажется, что простой способ сделать это - преобразовать arrayList в JSON, поскольку есть встроенная функция toJSONString (), но этот вызов преобразует его в сильный JSON с множеством прямых слешей, например: {\ "value1 \": 95, \ "значение2 \": \ "275 \"}. Я хотел бы преобразовать его в обычную строку JSON, подходящую для REST API, например: {"value1": "30", "value2", "65"}. Есть ли способ сделать это?

1 Ответ

0 голосов
/ 08 мая 2018

Надо просто использовать аннотацию '@Produces (MediaType.APPLICATION_JSON)' над методом, который возвращает ArrayList.

Например:

Представьте, что у нас есть класс Model 'Message': Имя файла: Message.java

import java.util.Date;

import javax.xml.bind.annotation.XmlRootElement;

@XmlRootElement
public class Message {

    private long id;
    private String message;
    private Date created;
    private String author;

    public Message(){

    }

    public Message(long id, String message, String author){
        this.id = id;
        this.message = message;
        this.author = author;
        this.created = new Date();
    }

    public long getId() {
        return id;
    }
    public void setId(long id) {
        this.id = id;
    }
    public String getMessage() {
        return message;
    }
    public void setMessage(String message) {
        this.message = message;
    }
    public Date getCreated() {
        return created;
    }
    public void setCreated(Date created) {
        this.created = created;
    }
    public String getAuthor() {
        return author;
    }
    public void setAuthor(String author) {
        this.author = author;
    }

}

Тогда у нас есть MessageService: Имя файла: MessageService.java

import java.util.ArrayList;
import java.util.List;
import java.util.Map;

public class MessageService {

    private Map<Long, Message> messages;

    public MessageService(){
        messages.put(1L, new Message(1, "Hello Stackoverflow", "Kevin"));
        messages.put(2L, new Message(2, "Hello Jersey", "Kevin"));
    }

    public List<Message> getAllMessages(){
        return new ArrayList<Message>(messages.values());
    }
}

Наконец, у вас будет файл ресурса, который на самом деле содержит метод для возврата вашего ArrayList: Имя файла: MessageResource.java

@Path("/messages")
public class MessageResource {

    MessageService messageService = new MessageService();
    @GET
    @Produces(MediaType.APPLICATION_JSON)
    public List<Message> getMessages(){

        return messageService.getAllMessages();
        //This method will return your ArrayList as JSON.
    }
}

Затем просто вызовите класс MessageResource с URL:

http://localhost:8080/kevinswebapi/messages

Примечание: localhost: 8080 / kevinswebapi - это ваш корневой путь

Надеюсь, это поможет ...

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...