使用Gson的fromJson
方法时,是否可以使用给定类的set方法?
我想这样做是因为对于目标类的每个String
全局变量都会进行修剪。
为此有任何GSON API注释吗?
我知道GSON提供了编写自定义序列化器/反序列化器的功能,但是我想知道是否还有另一种方法可以实现此目的。
最佳答案
我实现了一个JsonDeserializer<String>
并将其注册在GsonBuilder
上。因此,对于收到的所有String字段,Gson将使用我的StringGsonTypeAdapter
反序列化该值。
下面是我的代码:
import static net.hugonardo.java.commons.text.StringUtils.normalizeSpace;
import static net.hugonardo.java.commons.text.StringUtils.trimToNull;
final class StringGsonTypeAdapter implements JsonDeserializer<String> {
private static final StringGsonTypeAdapter INSTANCE = new StringGsonTypeAdapter();
static StringGsonTypeAdapter instance() {
return INSTANCE;
}
@Override
public String deserialize(JsonElement jsonElement, Type type,
JsonDeserializationContext jsonDeserializationContext) throws JsonParseException {
return normalizeSpace(trimToNull(jsonElement.getAsString()));
}
}
...以及我的GsonBuilder:
Gson gson = new GsonBuilder()
.registerTypeAdapter(String.class, StringGsonTypeAdapter.instance())
.create())