Java 如何始终以数组而不是json形式返回对象?

Java 如何始终以数组而不是json形式返回对象?,java,json,rest,jersey,Java,Json,Rest,Jersey,如果我的结果对象有多个值,则将数组作为json返回。但如果我的结果对象只有一个值,则将对象作为json返回。我不想返回一个对象。我总是想返回一个数组 我的代码如下: @Service @Path("/item") @Produces(MediaType.APPLICATION_JSON) @Consumes(MediaType.APPLICATION_JSON) @Scope("request") public class MyResource { @GET @Path("/

如果我的结果对象有多个值,则将数组作为json返回。但如果我的结果对象只有一个值,则将对象作为json返回。我不想返回一个对象。我总是想返回一个数组

我的代码如下:

@Service
@Path("/item")
@Produces(MediaType.APPLICATION_JSON)
@Consumes(MediaType.APPLICATION_JSON)
@Scope("request")
public class MyResource {


    @GET
    @Path("/ac")
    public List<ACResult> getACResults(@QueryParam("term") String term) {
        List<MyResultClass> result = new ArrayList<>();
        ...
        return result;
    }
}
@服务
@路径(“/item”)
@产生(MediaType.APPLICATION_JSON)
@使用(MediaType.APPLICATION_JSON)
@范围(“请求”)
公共类MyResource{
@得到
@路径(“/ac”)
公共列表getACResults(@QueryParam(“术语”)字符串术语){
列表结果=新建ArrayList();
...
返回结果;
}
}
我用球衣1.18.3


当存在单个对象时,如何始终将数组而不是对象作为json返回

我的问题解决了。我在我的项目中添加了如下新类:

@Provider
public class JAXBContextResolver implements ContextResolver<JAXBContext>  {

    private JAXBContext context;

    private final Class[] types = {MyResultClass.class};

    public JAXBContextResolver() throws Exception {
        this.context = new JSONJAXBContext(JSONConfiguration.mapped().arrays("myJsonKey").build(), types);
    }

    @Override
    public JAXBContext getContext(final Class objectType) {
        for (Class type : types) {
            if (type == objectType) {
                return context;
            }
        }
        return null;
    }

}
@Provider
公共类JAXBContextResolver实现ContextResolver{
私有JAXBContext上下文;
私有最终类[]类型={MyResultClass.Class};
公共JAXBContextResolver()引发异常{
this.context=newJSONJAXBContext(JSONConfiguration.mapped().arrays(“myJsonKey”).build(),types);
}
@凌驾
公共JAXBContext getContext(最终类objectType){
对于(类类型:类型){
if(type==objectType){
返回上下文;
}
}
返回null;
}
}

参考:或者

如果您的接口定义数据作为json数组发送,那么它将始终是json数组,即使它只包含一个元素。从开发的角度来看,在任何情况下都可以简单地依赖返回的数组并检查长度。为什么服务对于单个元素应该有不同的行为?我想我的表达是错误的。我不想返回一个对象。我总是想返回一个数组。我的代码有不同的行为。如果您返回arraylist,它还应该返回json数组。您可以尝试创建一个新的返回类,该类包含您要返回的数组,然后返回该类的对象吗?检查此链接:。它将在“5.2.2.1”节中讨论您的问题。映射符号'。