1

几天来,我一直在努力序列化 Jersey 中的空列表和单元素列表。我进行了很多搜索,但找不到解决问题的方法。我试图通过添加 JAXBContextResolver 类来修复它。目标是在所有情况下都将包含 JSON 数组的 JSON 对象返回给我的 Android 应用程序(如果它返回 0 个元素或 1 个元素或超过 1 个)。我尝试使用 JSONConfigurationMAPPEDNATURALJSON 符号。非常感谢您的帮助。提前致谢

NATURAL JSONConfiguration在这个问题中使用了:

Jersey将空列表和单元素列表序列化为数组

但我认为更好的方法是使用MAPPED JSONConfiguration这种配置的问题,它只适用于一个类并且它不能解决空列表的问题。请我真的需要你的帮助

@Provider
public class JAXBContextResolver implements ContextResolver < JAXBContext > {

    private JAXBContext context;
    private Class[] types = {Workitem.class, Project.class, User.class};

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

    }

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

我也尝试了这个解决方案 如何将 JAXB 对象列表的序列化自定义为 JSON?

但我真的需要 JSON 数据看起来像这样:

{
    "project": [
        {
            "assignedTo": "assignee1",
            "businessKey": "Key1",
            "createdBy": "createdBy1",
            "description": "description1"
        }
    ]
}

而空列表看起来像这样:

   {
        "project": []
   }
4

0 回答 0