Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/linux/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Jersey 2 JSON丢弃展开根元素_Json_Rest_Jaxb_Jax Rs_Jersey 2.0 - Fatal编程技术网

Jersey 2 JSON丢弃展开根元素

Jersey 2 JSON丢弃展开根元素,json,rest,jaxb,jax-rs,jersey-2.0,Json,Rest,Jaxb,Jax Rs,Jersey 2.0,我们正在从泽西岛1号迁移到泽西岛2号。 到目前为止,我们使用的ContextResolver配置如下: import com.sun.jersey.api.json.JSONConfiguration; import com.sun.jersey.api.json.JSONConfiguration.MappedBuilder; @Provider @Produces("application/json") public class JSONJAXBContex

我们正在从泽西岛1号迁移到泽西岛2号。 到目前为止,我们使用的ContextResolver配置如下:

import com.sun.jersey.api.json.JSONConfiguration;
import com.sun.jersey.api.json.JSONConfiguration.MappedBuilder;

        @Provider
        @Produces("application/json")
public class JSONJAXBContextResolver implements ContextResolver<Class<?>> {
            @Override
                public JAXBContext getContext(Class<?> objectType) {

                        MappedBuilder mapped = JSONConfiguration.mapped();
                        mapped.arrays("Property"); //$NON-NLS-1$
                        mapped.arrays("option"); //$NON-NLS-1$
                        JSONConfiguration build = mapped.xml2JsonNs(NamespacesMapper.getNamespacesMap()).build();
                        return new JSONJAXBContext(build, objectType);

                }
    }
但是,对于jersey 2,没有更多的JSONConfiguration.mapped()。 相反,我们正在寻找做同样事情的抛弃方式。 因此,我们现在有:

@Provider
@Produces("application/json")
public class JSONJAXBContextResolver implements ContextResolver<Class<?>> {

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

             MappedJettisonBuilder mappedJettison = JettisonConfig.mappedJettison();

             mappedJettison.serializeAsArray("Property"); //$NON-NLS-1$
             mappedJettison.serializeAsArray("option"); //$NON-NLS-1$
             JettisonConfig build = mappedJettison.xml2JsonNs(NamespacesMapper.getNamespacesMap()).build();
            return new JettisonJaxbContext(build, objectType);


    }
注意“root”元素“error”。这大大破坏了我们的JSON表示

我花了将近两天的时间试图弄清楚如何配置抛弃以排除xml根元素,但没有效果

我注意到,在DettisonConfig javadoc中有以下内容:

但是,即使使用默认配置而不是映射也不会生成所需的json—根“error”元素仍然存在

我甚至在抛弃源代码中查找了控制此行为的配置属性,但找不到任何内容


有人知道如何以及是否有可能使抛弃忽略根XML元素吗

嗨,我最近面临这个问题。你找到解决方法了吗?遗憾的是没有。继续使用jersey 1自定义json表示的唯一方法是重用jersey 2中jersey 1附带的json提供程序。你能告诉我应该在jersy 2中添加哪些JAR,以便忽略根标记吗?目前的抛弃依赖项是jersey media json抛弃version
2.23.1
。。。我没有找到一种方法来打开根元素与任何供应商-抛弃,杰克逊或莫西。我必须获得jersey 1代码并手动创建自己的jersey 2 json提供程序,以便保留jersey 1 json表示。
@Provider
@Produces("application/json")
public class JSONJAXBContextResolver implements ContextResolver<Class<?>> {

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

             MappedJettisonBuilder mappedJettison = JettisonConfig.mappedJettison();

             mappedJettison.serializeAsArray("Property"); //$NON-NLS-1$
             mappedJettison.serializeAsArray("option"); //$NON-NLS-1$
             JettisonConfig build = mappedJettison.xml2JsonNs(NamespacesMapper.getNamespacesMap()).build();
            return new JettisonJaxbContext(build, objectType);


    }
{"error":{"@id":"as213","code":"ERR12","cause":{"validationMessages":{"validationMessage":{"message":"some message","details":"some details","severity":"ERROR"}}}}}
public static final JettisonConfig DEFAULT

    The default JettisonConfig uses JettisonConfig.Notation.MAPPED_JETTISON notation with root unwrapping option set to true.