【发布时间】:2016-05-16 14:17:03
【问题描述】:
我的服务器返回具有 2 种不同类型的结果:成功时的 SearchResultDTO 和错误时的字符串。我需要处理这两种类型并始终返回 SearchResultDTO 类型。这是我的反序列化器:
public class SearchResultsDeserializer extends JsonDeserializer<SearchResultDTO> {
@Override
public SearchResultDTO deserialize(JsonParser jp, DeserializationContext ctxt) throws IOException {
JsonToken t = jp.getCurrentToken();
if (t == JsonToken.VALUE_STRING){
return new SearchResultDTO(jp.getText());
} else {
return jp.readValueAs(SearchResultDTO.class);
}
}
}
当我运行此代码并且服务器发送 SearchResultDTO 对象时,jackson 通过调用此函数进入无限循环并返回错误:“java.lang.StackOverflowError: stack size 1036KB”
【问题讨论】:
标签: java android json jackson deserialization