java – 将JSON字段序列化为JSON
发布时间:2020-12-15 04:16:10 所属栏目:Java 来源:网络整理
导读:我正在尝试将String字段序列化为 JSON(如果它包含 JSON对象).为此我写了一个自定义序列化器: public class TryJsonStringSerializer extends JsonSerializerString { @Override public void serialize(String value,JsonGenerator jsonGenerator,Serializer
我正在尝试将String字段序列化为
JSON(如果它包含
JSON对象).为此我写了一个自定义序列化器:
public class TryJsonStringSerializer extends JsonSerializer<String> { @Override public void serialize(String value,JsonGenerator jsonGenerator,SerializerProvider serializerProvider) throws IOException,JsonProcessingException { if (value == null) { return; } value = value.trim(); if (value.startsWith("{") && value.endsWith("}")) { jsonGenerator.writeRaw(value); } else { jsonGenerator.writeString(value); } } } 但是我收到以下错误: org.codehaus.jackson.JsonGenerationException: Can not write a field name,expecting a value org.codehaus.jackson.impl.JsonGeneratorBase._reportError(JsonGeneratorBase.java:480) org.codehaus.jackson.impl.Utf8Generator.writeFieldName(Utf8Generator.java:292) org.codehaus.jackson.map.ser.BeanPropertyWriter.serializeAsField(BeanPropertyWriter.java:422) org.codehaus.jackson.map.ser.std.BeanSerializerBase.serializeFields(BeanSerializerBase.java:150) org.codehaus.jackson.map.ser.BeanSerializer.serialize(BeanSerializer.java:112) org.codehaus.jackson.map.ser.BeanPropertyWriter.serializeAsField(BeanPropertyWriter.java:446) org.codehaus.jackson.map.ser.std.BeanSerializerBase.serializeFields(BeanSerializerBase.java:150) org.codehaus.jackson.map.ser.BeanSerializer.serialize(BeanSerializer.java:112) org.codehaus.jackson.map.ser.std.StdContainerSerializers$IndexedListSerializer.serializeContents(StdContainerSerializers.java:122) org.codehaus.jackson.map.ser.std.StdContainerSerializers$IndexedListSerializer.serializeContents(StdContainerSerializers.java:71) org.codehaus.jackson.map.ser.std.AsArraySerializerBase.serialize(AsArraySerializerBase.java:86) org.codehaus.jackson.map.ser.StdSerializerProvider._serializeValue(StdSerializerProvider.java:610) org.codehaus.jackson.map.ser.StdSerializerProvider.serializeValue(StdSerializerProvider.java:256) org.codehaus.jackson.map.ObjectMapper.writeValue(ObjectMapper.java:1613) ... 实现这一目标的最佳方法是什么? 解决方法public class TryJsonStringSerializer extends JsonSerializer<String> { private RawSerializer<String> rawSerializer = new RawSerializer<String>(String.class); private ToStringSerializer stringSerializer = ToStringSerializer.instance; @Override public void serialize(String value,JsonProcessingException { if (value == null) { return; } value = value.trim(); if (value.startsWith("{") && value.endsWith("}")) { rawSerializer.serialize(value,jsonGenerator,serializerProvider); } else { stringSerializer.serialize(value,serializerProvider); } } } (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |