先日書いた MapSerializer
oboe2uran.hatenablog.com
入れ子でも、key : "" を適用させるには、、、registerTypeAdapter での登録に入れ子のパターンを書けばよい。
import com.google.common.reflect.TypeToken; import com.google.gson.Gson; import com.google.gson.GsonBuilder; Gson gson = new GsonBuilder() .registerTypeAdapter(new TypeToken<Map<String, Object>>(){}.getType(), new MapSerializer()) .registerTypeAdapter(new TypeToken<Map<String, Map<String, Object>>>(){}.getType(), new MapSerializer()) .create(); String res = gson.toJson(map , new TypeToken<Map<String, Object>>(){}.getType());
例えば、、
Map<String, Object> map = new HashMap<>(); Map<String, Object> nest = new HashMap<>(); Map<String, Object> nest2 = new HashMap<>(); nest2.put("D1", "30"); nest2.put("D2", null); nest.put("E", nest2); nest.put("B1", "20"); nest.put("B2", null); map.put("A1", "1"); map.put("A2", null); map.put("C", nest);
これは、
{"A1":"1","A2":"","C":{"B2":"","E":{"D1":"30","D2":""},"B1":"20"}}
になる。