我有以下设置:
public static class MyPojoImpl {
@SerializedName("myNumber")
private int myNumber;
@SerializedName("myType")
private String myType;
@Override
public List<String> getMyNumber() {
return myNumber;
}
@Override
public @Type String getMyType() {
return myType;
}
@StringDef({Type.ONE,
Type.TWO,
Type.THREE})
@Retention(RetentionPolicy.SOURCE)
@interface Type {
String ONE = "ONE";
String TWO = "TWO";
String THREE = "THREE";
}
}
Run Code Online (Sandbox Code Playgroud)
我有一个myType来自 JSON的字符串值。我想将此字符串值限制为某些值。myType在设置为我的对象之前有什么方法可以拦截吗?
我知道我可以通过转换为type枚举来实现这一点,但我想完全避免使用枚举。或者,我也可以将检查逻辑放在 getter 中,但这不是太有效。
Jackson 允许使用 setter。GSON中有类似的东西吗?
是的,您可以通过实施来自定义反序列化过程 JsonDeserializer
private class DateTimeDeserializer implements JsonDeserializer<MyPojoImpl> {
public MyPojoImpl deserialize(JsonElement json, Type typeOfT, JsonDeserializationContext context)
throws JsonParseException {
MyPojoImpl pojoImpl = new MyPojoImpl();
// Do the Processing here
return pojoImpl
}
}
GsonBuilder gson = new GsonBuilder();
gson.registerTypeAdapter(MyPojoImpl.class, new DateTimeDeserializer());
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
694 次 |
| 最近记录: |