Java 通过泽西岛发布JSON

Java 通过泽西岛发布JSON,java,web-services,rest,jersey,jaxb2,Java,Web Services,Rest,Jersey,Jaxb2,我有这个密码 ClientConfig config = new DefaultClientConfig(); Client client = Client.create(config); client.addFilter(new HTTPBasicAuthFilter(adminUser, adminPass)); client.addFilter(new LoggingFilter(System.out)); WebResource service

我有这个密码

    ClientConfig config = new DefaultClientConfig();
    Client client = Client.create(config);
    client.addFilter(new HTTPBasicAuthFilter(adminUser, adminPass));
    client.addFilter(new LoggingFilter(System.out));

    WebResource service = client.resource(baseURL);
    ClientResponse clientResponse = service.path("api")
            .path("v1")
            .path("shoppers")
            .path(orderId)
            .path("status.json").accept(MediaType.APPLICATION_JSON).post(ClientResponse.class, request);
每当我尝试发布类似于此的JSON请求时,都会得到
HTTP415
错误响应。对这个问题的深入研究表明泽西并没有正确地整理我的对象。通过添加
LoggingFilter
,我可以看到在请求体中,
JAXBObject
被缓冲到
XML
,而不是
JSON

这是泽西岛的一种已知行为吗?我应该在这里做什么?

您可能需要根据请求调用以设置内容类型(我假设Jersey在这方面做得很聪明):


你没有告诉它在任何地方将其封送为JSON,那么为什么你会认为它是呢?我认为这是一种基于内容类型的内置行为。不管怎样,怎么做?即使在这里,他也没有告诉Jersey将其整理成JSON。这是自动完成的。啊,有时候当你试图自己重新编写代码时,你会错过基本的东西。格雷西亚
.path("status.json")
.type(MediaType.APPLICATION_JSON) // <-- This line
.accept(MediaType.APPLICATION_JSON)
.post(ClientResponse.class, request);
ObjectMapper mapper = new ObjectMapper();
String jsonStr = mapper.writeValueAsString(jsonObj);