[英]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.