【问题标题】:ALLOW_UNQUOTED_FIELD_NAMES JSON in EclipseLink MOXy Dynamic ObjectGraphsEclipseLink MOXy 动态对象图中的 ALLOW_UNQUOTED_FIELD_NAMES JSON
【发布时间】:2014-05-08 15:14:45
【问题描述】:

有没有类似的属性:

JsonGenerator.Feature.QUOTE_FIELD_NAMES

JsonGenerator.Feature.ALLOW_UNQUOTED_FIELD_NAMES

等价于:

org.eclipse.persistence.jaxb.MarshallerProperties

我的问题是,我正在尝试通过这种方法使用 Jackson 获取 JSON 输出:

private static final ObjectMapper om = new ObjectMapper();

static {
 om.configure(JsonGenerator.Feature.QUOTE_FIELD_NAMES, false);
 om.configure(JsonParser.Feature.ALLOW_UNQUOTED_FIELD_NAMES, true);
 om.configure(SerializationConfig.Feature.WRITE_DATES_AS_TIMESTAMPS, true);
 om.configure(DeserializationConfig.Feature.FAIL_ON_UNKNOWN_PROPERTIES, false);
 om.getSerializationConfig().setSerializationInclusion(JsonSerialize.Inclusion.NON_NULL);
}



try{
 String exp = om.writeValueAsString(customer);
 exp = "CREATE (customerNode"+customer.hashCode()+":CUSTOMER " + exp + " )";
}catch (Exception ex){}

最后,我得到了这个异常:

org.codehaus.jackson.map.JsonMappingException: Conflicting getter definitions for property "rootParentDescriptor": org.eclipse.persistence.descriptors.InheritancePolicy#getRootParentDescriptor(0 params) vs org.eclipse.persistence.descriptors.InheritancePolicy#isRootParentDescriptor(0 params) (through reference chain: blog.objectgraphs.dynamic.Customer["propertiesMap"]->java.util.HashMap["shippingAddress"]->org.eclipse.persistence.internal.dynamic.PropertyWrapper["value"]->blog.objectgraphs.dynamic.Address["type"]->org.eclipse.persistence.internal.dynamic.DynamicTypeImpl["descriptor"]->org.eclipse.persistence.oxm.XMLDescriptor["inheritancePolicy"])
        at org.codehaus.jackson.map.ser.StdSerializerProvider._createAndCacheUntypedSerializer(StdSerializerProvider.java:740)
        at org.codehaus.jackson.map.ser.StdSerializerProvider.findValueSerializer(StdSerializerProvider.java:344)
        at org.codehaus.jackson.map.ser.impl.PropertySerializerMap.findAndAddSerializer(PropertySerializerMap.java:39)
        at org.codehaus.jackson.map.ser.BeanPropertyWriter._findAndAddDynamic(BeanPropertyWriter.java:463)
        at org.codehaus.jackson.map.ser.BeanPropertyWriter.serializeAsField(BeanPropertyWriter.java:441)
        at org.codehaus.jackson.map.ser.std.BeanSerializerBase.serializeFields(BeanSerializerBase.java:150)
        at org.codehaus.jackson.map.ser.BeanSerializer.serialize(BeanSerializer.java:112)
        at org.codehaus.jackson.map.ser.BeanPropertyWriter.serializeAsField(BeanPropertyWriter.java:446)
        at org.codehaus.jackson.map.ser.std.BeanSerializerBase.serializeFields(BeanSerializerBase.java:150)
        at org.codehaus.jackson.map.ser.BeanSerializer.serialize(BeanSerializer.java:112)
        at org.codehaus.jackson.map.ser.BeanPropertyWriter.serializeAsField(BeanPropertyWriter.java:446)
        at org.codehaus.jackson.map.ser.std.BeanSerializerBase.serializeFields(BeanSerializerBase.java:150)
        at org.codehaus.jackson.map.ser.BeanSerializer.serialize(BeanSerializer.java:112)
        at org.codehaus.jackson.map.ser.BeanPropertyWriter.serializeAsField(BeanPropertyWriter.java:446)
        at org.codehaus.jackson.map.ser.std.BeanSerializerBase.serializeFields(BeanSerializerBase.java:150)
        at org.codehaus.jackson.map.ser.BeanSerializer.serialize(BeanSerializer.java:112)
        at org.codehaus.jackson.map.ser.std.MapSerializer.serializeFields(MapSerializer.java:262)
        at org.codehaus.jackson.map.ser.std.MapSerializer.serialize(MapSerializer.java:186)
        at org.codehaus.jackson.map.ser.std.MapSerializer.serialize(MapSerializer.java:23)
        at org.codehaus.jackson.map.ser.BeanPropertyWriter.serializeAsField(BeanPropertyWriter.java:446)
        at org.codehaus.jackson.map.ser.std.BeanSerializerBase.serializeFields(BeanSerializerBase.java:150)
        at org.codehaus.jackson.map.ser.BeanSerializer.serialize(BeanSerializer.java:112)
        at org.codehaus.jackson.map.ser.StdSerializerProvider._serializeValue(StdSerializerProvider.java:610)
        at org.codehaus.jackson.map.ser.StdSerializerProvider.serializeValue(StdSerializerProvider.java:256)
        at org.codehaus.jackson.map.ObjectMapper._configAndWriteValue(ObjectMapper.java:2575)
        at org.codehaus.jackson.map.ObjectMapper.writeValueAsString(ObjectMapper.java:2097)
        at blog.objectgraphs.dynamic.DemoRuntime.main(DemoRuntime.java:86)
Caused by: java.lang.IllegalArgumentException: Conflicting getter definitions for property "rootParentDescriptor": org.eclipse.persistence.descriptors.InheritancePolicy#getRootParentDescriptor(0 params) vs org.eclipse.persistence.descriptors.InheritancePolicy#isRootParentDescriptor(0 params)
        at org.codehaus.jackson.map.introspect.POJOPropertyBuilder.getGetter(POJOPropertyBuilder.java:167)
        at org.codehaus.jackson.map.introspect.POJOPropertyBuilder.getAccessor(POJOPropertyBuilder.java:116)
        at org.codehaus.jackson.map.ser.BeanSerializerFactory.removeIgnorableTypes(BeanSerializerFactory.java:705)
        at org.codehaus.jackson.map.ser.BeanSerializerFactory.findBeanProperties(BeanSerializerFactory.java:562)
        at org.codehaus.jackson.map.ser.BeanSerializerFactory.constructBeanSerializer(BeanSerializerFactory.java:434)
        at org.codehaus.jackson.map.ser.BeanSerializerFactory.findBeanSerializer(BeanSerializerFactory.java:347)
        at org.codehaus.jackson.map.ser.BeanSerializerFactory.createSerializer(BeanSerializerFactory.java:291)
        at org.codehaus.jackson.map.ser.StdSerializerProvider._createUntypedSerializer(StdSerializerProvider.java:782)
        at org.codehaus.jackson.map.ser.StdSerializerProvider._createAndCacheUntypedSerializer(StdSerializerProvider.java:735)
        ... 26 more

【问题讨论】:

  • 你的源“JSON”是什么(如果我们可以这样称呼它),你试图序列化的类的代码是什么?
  • @fge,对于特定情况,它不是显式类,该类是由库从 XML 源自动生成的,如:blog.objectgraphs.dynamic.Customer,您可以看到:@ 987654321@了解所有先前流程的详细信息

标签: java json jaxb eclipselink


【解决方案1】:

EclipseLink MOXy 目前没有使您能够在 JSON 中使用不带引号的字段名称的功能。您可以在此处输入此功能的增强请求:

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-12-26
    • 1970-01-01
    • 2011-07-08
    • 1970-01-01
    • 2016-02-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多