java - EclipseLink MOXy 动态对象图中的 ALLOW_UNQUOTED_FIELD_NAMES JSON

标签 java json jaxb eclipselink

是否有类似的属性:

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

最佳答案

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

关于java - EclipseLink MOXy 动态对象图中的 ALLOW_UNQUOTED_FIELD_NAMES JSON,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23545805/

相关文章:

java - 如何在 Java 应用程序之间共享 .jar 文件

java - 如何将Stanford nlp中的CoreDocument保存到磁盘

java - jaxb 解码器将值读取为 0

java - JAXB 解码 @XmlAnyElement

grails - 如何使用 JAXB 类型作为 Grails 域类?

java - JPanel不适应任何变化

java - 需要 Java 方面的帮助(普通程序)

javascript - Meteor 不接受 getJson 之外的 div 调用?

javascript - 使用javascript计算json中的值

java - 使用 JSESSION ID 或身份验证访问 JSON