1 回答
TA贡献1786条经验 获得超13个赞
作为通用答案,这可以通过 custom 完成JsonDeserialiser,例如:
public class HtmlAdapter implements JsonDeserializer<String> {
@Override
public String deserialize(JsonElement json, Type typeOfT,
JsonDeserializationContext context)
throws JsonParseException {
return StringEscapeUtils.unescapeHtml4(json.getAsString());
}
}
并添加
gsonBuilder.registerTypeAdapter(String.class, new HtmlAdapter())
到您的静态块。方法StringEscapeUtils.unescapeHtml4来自外部库,org.apache.commons, commons-text但你可以用任何你感觉更好的方式来做。
这个特定适配器的问题在于它适用于所有反序列化的String字段,这可能是也可能不是性能问题。
要获得更复杂的解决方案,您还可以查看TypeAdapterFactory. 有了它,您可以决定每个类是否要将某种类型适配器应用于该类。因此,例如,如果您的 POJO 继承了一些公共基类,那么检查类是否扩展了该基类并返回适配器就像在该类中HtmlAdapter为Strings应用 HTML 解码一样简单。
添加回答
举报