0
使用Gson序列化Java對象列表時,我希望對象進行過濾,以便只有在狀態字段中具有特定值的對象才被序列化。到目前爲止,我想出了使用兩個GSON情況下,一個具有自定義序列,一個沒有停止Gson從序列化列表中的對象
...
gson = gsonBuilder.create();
gsonBuilder.registerTypeAdapter(PropertyValue.class, new PropertyValueSerializer());
strictGson = gsonBuilder.create();
其中PropertyValueSerializer看起來是這樣的:
public static class PropertyValueSerializer implements JsonSerializer<PropertyValue> {
@Override
public JsonElement serialize(PropertyValue propertyValue, Type typeOfT, JsonSerializationContext context) {
PropertyStatus propertyStatus = propertyValue.getStatus();
if (propertyStatus == null || propertyStatus.isIndex()) {
return gson.toJsonTree(propertyValue);
} else {
return null;
}
}
}
也就是說,使用默認序列化或返回null狀態字段指示PropertyValue不應被序列化。這會執行,但返回null顯然不能從系列化排除對象的PropertyValue工作,我得到JSON這樣的:
[
{
"status": "HasDraft",
"sourceInfo": {
"author": "UUU",
"refId": "6aad7da8-e635-461d-8d42-c9a8aecd61fc"
},
"valueType": "TEXT",
"value": {
"sv": "Rojo"
}
},
null
]
有沒有辦法排除第二個對象的PropertyValue所以我得到
[
{
"status": "HasDraft",
"sourceInfo": {
"author": "UUU",
"refId": "6aad7da8-e635-461d-8d42-c9a8aecd61fc"
},
"valueType": "TEXT",
"value": {
"sv": "Rojo"
}
}
]
「新的應用程序應該更喜歡TypeAdapter,其流API比這個接口的API樹更有效。」您應該更好地使用TypeAdapters來提高效率。 – Devrim 2014-09-20 15:49:23
謝謝愛琴海,將研究這一點,因爲我還發現我的解決方案存在缺陷(處理遞歸結構)。 – 2014-09-21 18:54:15