繁体   English   中英

将ArrayList的内容显示为Java Jersey REST API的正确格式的JSON

[英]Displaying contents of ArrayList into properly formatted JSON for Java Jersey REST API

我正在构建一个Restful API,它将以JSON格式发送响应。 我要发送的数据在arrayList中。 执行此操作的简单方法似乎是将arrayList转换为JSON,因为它具有内置的toJSONString(),但是该调用将其转换为带有很多正斜杠的JSON强,例如:{\\“ value1 \\”: 95,\\“ value2 \\”:\\“ 275 \\”}。 我想将其转换为适合REST API的普通JSON字符串,例如:{“ value1”:“ 30”,“ value2”,“ 65”}。 有没有办法做到这一点?

您只需要在返回ArrayList的方法上方使用注释'@Produces(MediaType.APPLICATION_JSON)'。

例如:

假设我们有一个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:FileName: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.
    }
}

然后只需从URL调用MessageResource类:

http:// localhost:8080 / kevinswebapi / messages

注意:localhost:8080 / kevinswebapi是您的根路径

我希望这有帮助...

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM