我有一个使用Gson进行序列化的对象:
class User {
String firstname;
String lastname;
JsonElement opaqueData;
}
在顶级对象级别,我希望Gson忽略空字段(例如,如果姓为空,则不应序列化它).
但是在opaqueData字段中,我希望对null进行序列化,因为应该将其序列化为不透明数据块.因此,使用新的GsonBuilder().serializeNulls().create().toJson(user)将不起作用.
但是@JsonAdapter也不起作用
class User {
String firstname;
String lastname;
@JsonAdapter(NullAdapter.class)
JsonElement opaqueData;
}
class NullAdapter extends TypeAdapter {
@Override
public void write(JsonWriter out, JsonElement value) throws IOException {
out.jsonValue(new GsonBuilder().serializeNulls().create().toJson(value));
}
@Override
public JsonElement read(JsonReader in) throws IOException {
// TODO Auto-generated method stub
return null;
}
}
看来适配器已被Gson忽略.
这是预期的行为吗?在没有为整个User类创建适配器然后手动序列化每个字段的情况下,如何做到这一点?