gpt4 book ai didi

java - 使用 Jersey 在浏览器上显示 JSON

转载 作者:行者123 更新时间:2023-11-29 03:36:15 25 4
gpt4 key购买 nike

我正在使用 Jersey 来实现 REST 服务。我想在浏览器上显示 JSON,但我得到的是 XML。

@Path("/todos")
public class TodosResource {

// Allows to insert contextual objects into the class,
// e.g. ServletContext, Request, Response, UriInfo
@Context
UriInfo uriInfo;
@Context
Request request;


// Return the list of todos to the user in the browser
@GET
@Produces({MediaType.APPLICATION_XML, MediaType.APPLICATION_JSON})
public List<Todo> getTodosBrowser() {
List<Todo> todos = new ArrayList<Todo>();
todos.addAll(TodoDao.instance.getModel().values());
return todos;
}

感谢您的帮助。

最佳答案

好吧,您的代码声明它生成 XML 和 JSON。根据您的浏览器设置,它可能请求 XML 而不是 JSON。

首先,检查您的代码是否确实可以生成 JSON。从 @Produces 注释中删除 MediaType.APPLICATION_XML 并再次测试。

如果可行,您将需要告诉您的浏览器请求 JSON。将 Accept: application/json 添加到您的请求 header 。

这是如何完成的取决于您的客户端应用程序。在 JavaScript 中,这是通过添加类似的东西来完成的

httpRequest.setRequestHeader('Accept', 'application/json'); 

取决于您使用的框架。您还可以在命令行上使用 curl 进行测试

curl -H "Accept: application/json" http://yourhost/context/todos

如果您在浏览器中键入 URL,它很可能会发送以下接受 header

Accept:text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8

因为浏览器想要向用户显示一些东西(样式化的 html)。这就是 MediaType.APPLICATION_XML 优先于 MediaType.APPLICATION_JSON 的原因。

关于java - 使用 Jersey 在浏览器上显示 JSON,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15383357/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com