使用Gson的fromJson
方法时,是否有任何方法可以使用给定类的set方法?
我想这样做,因为对于目标类的每个String
全局变量都会进行修剪。
是否有针对此的GSON API注释?
我知道GSON提供了编写自定义序列化器/反序列化器的能力,但我想知道是否有另一种方法可以实现这一点。
答案 0 :(得分:13)
否,没有。 Gson主要通过实例字段的反射来工作。因此,如果你不打算转移到具有此功能的杰克逊,我认为你不能有一般的方式来打电话给你的安装人员。所以没有注释。
<强> BUT 强>
为了满足您的特定需求,您可以:
只要您发布一些代码或提供有关您的数据/ JSON的信息,我就可以为您提供更多提示。
答案 1 :(得分:3)
我实施了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())