19

私は Gson を使用しており、特定の Json 文字列のサイズを縮小する必要がある状況にあります。nullオブジェクト、空の値のみ、空のリストと配列をJson文字列に入れないようにすることで、そうしたいと思います。

それを行う簡単な方法はありますか?

少し明確にさせてください: emptyProp:{} または emptyArray:[] と書かれているものはすべてスキップします。空のプロパティのみを含むオブジェクトをスキップしたい。

4

2 に答える 2

32

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();
于 2013-06-13T14:27:40.143 に答える