Jaxb MOXy如何处理空数组

Jaxb MOXy如何处理空数组,jaxb,jersey,moxy,Jaxb,Jersey,Moxy,在我的Jersey项目中,我使用MOXy对JSON进行封送处理。我想要封送的一个类是一个字符串数组,它可以是空的 class Data { @XmlElement(nillable = true) public String[] array; } 在数组为空的情况下,我希望输出为: { "array" : [] } 但是,看起来MOXy正在从输出中过滤出空数组。如何让它在输出中包含空数组 我曾考虑将JSONConfiguration.mapped().array(“array”

在我的Jersey项目中,我使用MOXy对JSON进行封送处理。我想要封送的一个类是一个字符串数组,它可以是空的

class Data
{
   @XmlElement(nillable = true) public String[] array;
}
在数组为空的情况下,我希望输出为:

{ 
   "array" : []
}
但是,看起来MOXy正在从输出中过滤出空数组。如何让它在输出中包含空数组


我曾考虑将JSONConfiguration.mapped().array(“array”).build()添加到MOXy提供程序构造函数中,但这似乎没有什么区别(我甚至不确定这是否是正确的解决方案)。

注意:我是该专家组的负责人和成员

原始答案

已输入以下增强请求。您可以使用下面的链接跟踪我们在这个问题上的进展


更新

从2012年5月19日EclipseLink 2.4.0标签开始,您可以设置以下属性以获得所需的行为

marshaller.setProperty(MarshallerProperties.JSON_MARSHAL_EMPTY_COLLECTIONS, true);
您可以从以下位置下载夜间日食标签:

根目录

在下面的类中,我们有三个
List
属性。
列表中的两个对象为空,一个为空。请注意,
emptyChoiceList
字段映射为
@XmlElements
@xmlmelements
注释说明可能的节点名称是
foo
bar

package forum10453441;

import java.util.*;
import javax.xml.bind.annotation.*;

@XmlType(propOrder={"nullList", "emptyList", "emptyChoiceList"})
@XmlAccessorType(XmlAccessType.FIELD)
public class Root {

    private List<String> nullList = null;

    private List<String> emptyList = new ArrayList<String>();

    @XmlElements({
        @XmlElement(name="foo", type=String.class),
        @XmlElement(name="bar", type=String.class)
    })
    private List<String> emptyChoiceList = new ArrayList<String>();

}
输出

现在在输出中,空列表被编组为空数组。对于使用
@xmllememts
映射的字段,JSON表示中使用了指定的节点名

{
   "emptyList" : [ ],
   "foo" : [ ]
}

谢谢我们通过使用Gson序列化这个特定的案例来解决这个问题。很高兴看到这一点得到了提高。当它准备好后,我们可以切换回它。@Oleksi-我们已经添加了对您描述的用例的支持。我用一个完整的例子更新了我的答案。
{
   "emptyList" : [ ],
   "foo" : [ ]
}