jersey 2.4返回JSONObject,不支持List,Map转换为json



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;
    }
}

最新更新