jersey 2.4返回JSONObject,不支持List、Map,只能将POJO返回到json
@GET
@Path("/test_map")
@Produces(MediaType.APPLICATION_JSON)
public RestResponse testMap(){
RestResponse restResponse = new RestResponse();
List<String> data = new ArrayList<>();
data.add("test");
data.add("map");
restResponse.setData(data);
restResponse.setStatus(RestResponse.EStatus.OK);
return restResponse;
}
回复:
{ status: "OK" data: "test map" }
jersey似乎调用了list.toString(),我想返回一个数据列表
{状态:"OK"数据:["测试","地图"]}
穿2.4号球衣能做到这一点吗
实现这一点的一种方法是
创建一个新类。
使用列表数据=新的ArrayList<>();作为成员。实现该类的add方法,以添加到ArrayList中。
重写该类的toString方法,以按您希望的方式返回列表。
在代码中使用该类,而不是ArrayList。
Use JacksonJsonProvider.class for marshalling and unmarshalling that can be found in jackson-core-asl-1.9.2.jar
just load this class in jersey resource
For example :
import java.util.HashSet;
导入java.util.Set;
导入javax.ws.rs.ApplicationPath;导入javax.ws.rs.core.Application;
导入org.codehaus.ackson.jaxrs.JacksonJsonProvider;
@ApplicationPath("/rest/v1")
public class YourResourceLoader extends Application
{
/* (non-Javadoc)
* @see javax.ws.rs.core.Application#getClasses()
*/
@Override
public Set<Class<?>> getClasses()
{
Set<Class<?>> classes = new HashSet<Class<?>>();
classes.add(JacksonJsonProvider.class);
return classes;
}
}