gpt4 book ai didi

java - 将 Java 对象保存到 JSON 时出现 JsonMappingException

转载 作者:行者123 更新时间:2023-11-30 03:56:43 27 4
gpt4 key购买 nike

 org.codehaus.jackson.map.JsonMappingException: No serializer found for class org.hibernate.proxy.pojo.javassist.JavassistLazyInitializer and no properties discovered to create BeanSerializer (to avoid exception, disable SerializationConfig.Feature.FAIL_ON_EMPTY_BEANS) ) through reference chain..

上面是我遇到的异常,我的 pojo 中的非原始成员变量无法读取。经过几次搜索后,我尝试为 POJO 类添加 @JsonAutoDetect ,并尝试为所有未识别的字段添加 @JsonProperty 注释。这不起作用,所以我也尝试了 @JsonIgnoreProperties({"hibernateLazyInitializer", "handler"}) 但也没有运气。

这是我尝试将对象转换为 json 的地方:

@Override
public Map<String, String> getChanges(User oldInfo, User newInfo) {
oldAndNewInfo = new HashMap<String, String>();
objectWriter = new ObjectMapper().writer().withDefaultPrettyPrinter();
try {
oldAndNewInfo.put(objectWriter.writeValueAsString(oldInfo), objectWriter.writeValueAsString(newInfo));
} catch (Exception e) {
e.printStackTrace(ps);
}
return oldAndNewInfo;
}

有人有什么想法吗?

最佳答案

我认为您应该禁用 SerializationConfig.Feature.FAIL_ON_EMPTY_BEANS 属性。

保持对象映射器内联的一个好方法(并且作为最佳实践)最好将它们保存在某种模块中。

protected 单例,Guice 配置,Spring 配置,一些单例的存储位置。我将在我的示例中使用 protected 单例,但这几乎就是文档所说的。

还请记住,用于 xml 或 json 的对象映射器的构建成本非常昂贵。如果您进行了大量序列化,请保存它

public abstract class JsonConfig{

private JsonConfig(){

}

private static final ObjectMapper CONFIGURED_OBJECT_MAPPER;
private static final JacksonJsonProvider JAX_RS_JSON_PROVIDER;

static{
ObjectMapper objectMapper = new ObjectMapper();
objectMapper.configure(SerializationFeature.FAIL_ON_EMPTY_BEANS, false);
objectMapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false);
objectMapper.configure(SerializationFeature.WRAP_ROOT_VALUE, false);
objectMapper.configure(DeserializationFeature.USE_BIG_DECIMAL_FOR_FLOATS, true);
objectMapper.configure(SerializationFeature.WRITE_EMPTY_JSON_ARRAYS, true);

//and just incase you do some web transformaions with jersy or something

JAX_RS_JSON_PROVIDER = new JacksonJsonProvider(objectMapper);

CONFIGURED_OBJECT_MAPPER = objectMapper;
}

public static ObjectMapper getObjectMapperInstance(){
return CONFIGURED_OBJECT_MAPPER;
}

public static JacksonJsonProvider getJsonProviderInstance(){
return return JAX_RS_JSON_PROVIDER
}
}

关于java - 将 Java 对象保存到 JSON 时出现 JsonMappingException,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22995678/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com