以下の例のクラスをGSONを使用してJSONにシリアル化したいとします。GSONを使用してマップのマップをシリアル化する方法は?
import com.google.gson.Gson;
import com.google.gson.GsonBuilder;
import java.util.LinkedHashMap;
public class Example
{
private LinkedHashMap<String,Object> General;
private static final String VERSION="Version";
private static final String RANGE="Range";
private static final String START_TIME="Start_Time";
private static final String END_TIME="End_Time";
public Example() {
General = new LinkedHashMap<String,Object>();
General.put(VERSION, "0.1");
LinkedHashMap<String,String> Range = new LinkedHashMap<String, String>();
Range.put(START_TIME, "now");
Range.put(END_TIME, "never");
General.put(RANGE, Range);
}
public String toJSON() {
Gson gson = new GsonBuilder().serializeNulls().create();
return gson.toJson(this);
}
}
私は、次のような出力を得ることが期待:GSONが地図General
内の地図Range
をシリアル化することができないようです
{"General":{"Version":"0.1","Range":{"Start_Time":"now","End_Time":"never"}}}
しかし、関数を呼び出すことtoJSON()
戻り
{"General":{"Version":"0.1","Range":{}}}
を。これはGSONの限界ですか、私はここで何か間違っていますか?
正しいとデフォルトのマップシリアライザはネストされたマップを処理しません、私はGSONチームのバグレポートを提出します。それは私にとって本当に悪いデフォルトのようです。少なくとも静かに内容を飲み込むのではなく、例外を投げるべきです。 – StaxMan
+1 @StaxManそれはそうです。私は以前これを見て、いくつかの回避策を考え出しました。これを行う方法があれば、それは参考になるでしょう。 – Nishant