私は Gson を使用しており、特定の Json 文字列のサイズを縮小する必要がある状況にあります。nullオブジェクト、空の値のみ、空のリストと配列をJson文字列に入れないようにすることで、そうしたいと思います。
それを行う簡単な方法はありますか?
少し明確にさせてください: emptyProp:{} または emptyArray:[] と書かれているものはすべてスキップします。空のプロパティのみを含むオブジェクトをスキップしたい。
serializeNulls() を GsonBuilder に設定しない限り、null 値はデフォルトで除外されます。
空のリストの方法は、JsonSerializer を作成することです
class CollectionAdapter implements JsonSerializer<List<?>> {
@Override
public JsonElement serialize(List<?> src, Type typeOfSrc, JsonSerializationContext context) {
if (src == null || src.isEmpty()) // exclusion is made here
return null;
JsonArray array = new JsonArray();
for (Object child : src) {
JsonElement element = context.serialize(child);
array.add(element);
}
return array;
}
}
そしたら登録する
Gson gson = new GsonBuilder().registerTypeHierarchyAdapter(Collection.class, new CollectionAdapter()).create();