【发布时间】:2015-07-11 04:32:22
【问题描述】:
我目前在反序列化某些内部对象时遇到问题,在春天,我在使用@ResponseBody 输出它们之前初始化所有对象。
例如,这是一个响应:
[{id:1, location:{id:1, ... extra location data}},
{id:2, location:1}
]
现在,GSON 抛出错误,因为它无法理解 location:1 指的是已在前一个对象中反序列化的位置对象。
反序列化是通过以下方法完成的:
@Override
public void handleReader(Reader reader) {
try {
String json = readerToString(reader);
T object = getGson().fromJson(json, returnType);
handleObject(object);
} catch (Exception e) {
Sentry.captureException(e);
}
}
例如,这是通过常规泛型类调用的,我将使用类型 Event[] 作为 T 泛型以返回数组。
如何使用 Gson 解决此问题或让 spring 每次都输出完整数据?理想情况下,我想使用 Gson 进行修复,因为它会严重降低带宽,但我现在并不太在意。
我的Spring返回方法如下:
@Override
public List<T> list() {
return service.findAll();
}
像这样初始化:
@Override
@Transactional
public List<Event> findAll() {
List<Event> list = eventRepository.findByArchivedFalse();
for (Event event : list) {
this.initialize(event);
}
return list;
}
@Override
public Event initialize(Event obj) {
Hibernate.initialize(obj.getLocation());
Hibernate.initialize(obj.getLocation().get... inner data here);
return obj;
}
我想这将需要一个真正的结构审查,但如果我能提供帮助,我想保持结构大致相同。
【问题讨论】:
标签: java json spring serialization gson