【发布时间】:2020-08-14 11:00:15
【问题描述】:
使用 LifeRay 门户和 ElasticSearch,序列化由 ServiceModel 对象组成的自定义对象,序列化很顺利:
public String toJSON(){
return JSONFactoryUtil.looseSerializeDeep(this);
}
我将它索引到 ES 中也很好,它包含这些对象的列表以及单个对象,没问题。
当我反序列化时,我得到这个错误:
10:10:53,972 ERROR [ExceptionHandlerBridgeImpl:78] jodd.json.JsonException: Default ctor not found for: eu.project.drives.platform.model.model.TainingProvider
对于每个参数,它是来自服务模型的对象。
代码(应该也可以,例如一个字段):
JSONObject obj = JSONFactoryUtil.createJSONObject(h.getSourceAsString());
TainingProvider t = JSONFactoryUtil.looseDeserialize(obj.getString("provider"), TainingProvider.class);
我不能简单地引入 Default 构造函数,因为它是由服务构建器生成的,我也不能执行“TainingProviderImpl.class”,因为它是不同的项目,但是 Impl 类应该是通过“TainingProvider.class”调用的,它包括默认构造函数。
谢谢。
【问题讨论】:
标签: json elasticsearch serialization deserialization liferay