使用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())

10-06 08:08