使用 JoiObject Mapper 时出现问题
Issue while using JoiObject Mapper
我们正在使用 JoiObjectMapper 将 POJO class 转换为 Json 字符串。
杰克逊版本:2.8.x
以下是对象映射器配置:
import com.amazon.jacksonion.JoiObjectMapper;
import com.fasterxml.jackson.annotation.JsonInclude;
import com.fasterxml.jackson.core.type.TypeReference;
import com.fasterxml.jackson.databind.DeserializationFeature;
import com.fasterxml.jackson.databind.MapperFeature;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.fasterxml.jackson.databind.SerializationFeature;
import com.fasterxml.jackson.databind.module.SimpleModule;
import com.fasterxml.jackson.datatype.joda.JodaModule;
import com.fasterxml.jackson.datatype.jsr310.JavaTimeModule;
public static ObjectMapper createObjectMapper() {
ObjectMapper mapper = new JoiObjectMapper();
mapper.setSerializationInclusion(JsonInclude.Include.NON_NULL);
mapper.disable(SerializationFeature.WRITE_DATES_AS_TIMESTAMPS);
mapper.enable(MapperFeature.SORT_PROPERTIES_ALPHABETICALLY);
mapper.disable(SerializationFeature.FAIL_ON_EMPTY_BEANS);
mapper.disable(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES);
mapper.registerModule(new JodaModule());
mapper.registerModule(new JavaTimeModule());
SimpleModule module = new SimpleModule();
module.addSerializer(new JavaUtilDateSerializer());
mapper.registerModule(module);
return mapper;
}
我们正在使用 objectMapper.writeValueAsString(object);
方法将 POJO 转换为 Json。
@Data
public class POJO {
@JsonProperty("a")
private String a;
@JsonProperty("b")
private String b;
}
问题:在转换为字符串时,对象映射器正在从 Json 键值中删除双引号。
实际输出 :
{
a : "abc",
b : "cde"
}
预期输出:
{
"a" : "abc",
"b" : "cde"
}
我们需要带双引号的 json。有人可以帮助我们我们在这里缺少什么吗??
我认为您正在寻找布尔值 属性 JsonGenerator.Feature.QUOTE_FIELD_NAMES
。如果我没记错的话,几年前默认情况下是真的。也许现在已经改变了。尝试设置 true
或 false
看看是否有效。
我们正在使用 JoiObjectMapper 将 POJO class 转换为 Json 字符串。 杰克逊版本:2.8.x 以下是对象映射器配置:
import com.amazon.jacksonion.JoiObjectMapper;
import com.fasterxml.jackson.annotation.JsonInclude;
import com.fasterxml.jackson.core.type.TypeReference;
import com.fasterxml.jackson.databind.DeserializationFeature;
import com.fasterxml.jackson.databind.MapperFeature;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.fasterxml.jackson.databind.SerializationFeature;
import com.fasterxml.jackson.databind.module.SimpleModule;
import com.fasterxml.jackson.datatype.joda.JodaModule;
import com.fasterxml.jackson.datatype.jsr310.JavaTimeModule;
public static ObjectMapper createObjectMapper() {
ObjectMapper mapper = new JoiObjectMapper();
mapper.setSerializationInclusion(JsonInclude.Include.NON_NULL);
mapper.disable(SerializationFeature.WRITE_DATES_AS_TIMESTAMPS);
mapper.enable(MapperFeature.SORT_PROPERTIES_ALPHABETICALLY);
mapper.disable(SerializationFeature.FAIL_ON_EMPTY_BEANS);
mapper.disable(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES);
mapper.registerModule(new JodaModule());
mapper.registerModule(new JavaTimeModule());
SimpleModule module = new SimpleModule();
module.addSerializer(new JavaUtilDateSerializer());
mapper.registerModule(module);
return mapper;
}
我们正在使用 objectMapper.writeValueAsString(object);
方法将 POJO 转换为 Json。
@Data
public class POJO {
@JsonProperty("a")
private String a;
@JsonProperty("b")
private String b;
}
问题:在转换为字符串时,对象映射器正在从 Json 键值中删除双引号。
实际输出 :
{
a : "abc",
b : "cde"
}
预期输出:
{
"a" : "abc",
"b" : "cde"
}
我们需要带双引号的 json。有人可以帮助我们我们在这里缺少什么吗??
我认为您正在寻找布尔值 属性 JsonGenerator.Feature.QUOTE_FIELD_NAMES
。如果我没记错的话,几年前默认情况下是真的。也许现在已经改变了。尝试设置 true
或 false
看看是否有效。