java – 当Gson反序列化JSON时,是否可以使用setter?

有没有办法在使用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())
上一篇:java – 用变量键解析json


下一篇:java – 如何通过键从gson对象获取值