相关疑难解决方法(0)

使用JAXB在Jersey RESTful API的JSON输出中包含null元素

我有一个类,我想通过Jersey RESTful API公开.它看起来类似于:

@XmlRootElement
public class Data {
    public String firstName;
    public String lastName;
}
Run Code Online (Sandbox Code Playgroud)

我的问题是这些字段可能为null,在这种情况下,字段从JSON输出中省略.我希望所有领域都存在,无论它们的价值如何.例如,如果lastName为null,则JSON输出将为:

{
   "firstName" : "Oleksi"
}
Run Code Online (Sandbox Code Playgroud)

而不是我想要的:

{
   "firstName" : "Oleksi",
   "lastName" : null
}
Run Code Online (Sandbox Code Playgroud)

我有一个JAXBContextResolver(ContextResolver的实现),如下所示:

@Provider
public class JAXBContextResolver implements ContextResolver<JAXBContext> {

     // internal state
    private final JAXBContext context;    
    private final Set<Class> types; 
    private final Class[] cTypes = { Data.class };


    public JAXBContextResolver() 
    throws Exception {

        types = new HashSet(Arrays.asList(cTypes));
        context = new JSONJAXBContext(JSONConfiguration.natural().humanReadableFormatting(true).build(), cTypes);
    }

    @Override
    public JAXBContext getContext(Class<?> objectType) {

        return (types.contains(objectType)) …
Run Code Online (Sandbox Code Playgroud)

java json jax-rs jaxb jersey

4
推荐指数
1
解决办法
1万
查看次数

标签 统计

java ×1

jax-rs ×1

jaxb ×1

jersey ×1

json ×1