Jersey/JAX-RS:以 XML/JSON 格式返回映射
如何使用 Jersey/JAX-RS 框架将 a 作为 XML/JSON 文档返回并不那么明显。它已经支持s,但是当涉及到s时,没有。即使我将 嵌入到包装类中,XML 架构中也没有类型。Map
List
Map
MessageBodyWriter
Ma
map
关于如何将Map封送到泽西岛的XML / JSON文档中的任何实用建议?
如何使用 Jersey/JAX-RS 框架将 a 作为 XML/JSON 文档返回并不那么明显。它已经支持s,但是当涉及到s时,没有。即使我将 嵌入到包装类中,XML 架构中也没有类型。Map
List
Map
MessageBodyWriter
Ma
map
关于如何将Map封送到泽西岛的XML / JSON文档中的任何实用建议?
我知道回复已经很晚了,但我希望有一天它会帮助某人:)我应用的最简单,最快捷的修复是
@GET
@Path("/{messageId}")
@Produces(MediaType.APPLICATION_JSON)
public Response getMessage(@PathParam("messageId") long id) {
Map<String, String> map = new HashMap<>();
map.put("1", "abc");
map.put("2", "def");
map.put("3", "ghi");
return Response.status(Status.OK).entity(map).build();
}
输出: { “1”: “abc”, “2”: “def”, “3”: “ghi” }
这绝对可以帮助您解决麻烦。
在Java EE 7中做到这一点非常容易。
REST 资源类:
package com.mycompany.maptojson.rest;
import java.util.HashMap;
import java.util.Map;
import javax.ws.rs.Path;
import javax.ws.rs.GET;
import javax.ws.rs.Produces;
import javax.enterprise.context.RequestScoped;
@Path("maps")
@RequestScoped
public class MapToJson {
@GET
@Produces("application/json")
public Map getJson() {
Map<String, String> theMap = new HashMap<>();
theMap.put("foo", "bar");
return theMap;
}
}
这:Application
package com.mycompany.maptojson.rest;
import java.util.Set;
import javax.ws.rs.core.Application;
@javax.ws.rs.ApplicationPath("webresources")
public class ApplicationConfig extends Application {
@Override
public Set<Class<?>> getClasses() {
Set<Class<?>> resources = new java.util.HashSet<>();
// following code can be used to customize Jersey 2.0 JSON provider:
try {
Class jsonProvider = Class.forName("org.glassfish.jersey.jackson.JacksonFeature");
// Class jsonProvider = Class.forName("org.glassfish.jersey.moxy.json.MoxyJsonFeature");
// Class jsonProvider = Class.forName("org.glassfish.jersey.jettison.JettisonFeature");
resources.add(jsonProvider);
} catch (ClassNotFoundException ex) {
java.util.logging.Logger.getLogger(getClass().getName()).log(java.util.logging.Level.SEVERE, null, ex);
}
addRestResourceClasses(resources);
return resources;
}
private void addRestResourceClasses(Set<Class<?>> resources) {
resources.add(com.mycompany.maptojson.rest.MapToJson.class);
}
}
如您所见,您可以将不同的类配置为:jsonProvider
Class.forName("org.glassfish.jersey.jackson.JacksonFeature");
或
Class.forName("org.glassfish.jersey.moxy.json.MoxyJsonFeature");
或
Class.forName("org.glassfish.jersey.jettison.JettisonFeature");