Я хочу сериализовать свой примерный класс ниже в JSON, используя GSON.Как сериализовать карту карты с помощью 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);
}
}
Я ожидал получить следующий вывод:
{"General":{"Version":"0.1","Range":{"Start_Time":"now","End_Time":"never"}}}
Но вызов функции toJSON()
возвращает
{"General":{"Version":"0.1","Range":{}}}
Это кажется, что GSON не может сериализовать карту Range
внутри карты General
. Является ли это ограничением GSON, или я делаю что-то неправильно здесь?
Если другие ответы правильный и по умолчанию Map serializer не будет обрабатывать вложенные карты, я бы подал отчет об ошибке для команды GSON. Мне кажется, это действительно плохие дефолты для меня; по крайней мере, это должно быть исключение, вместо того, чтобы спокойно глотать содержимое. – StaxMan
+1 @StaxMan похоже. Я видел это раньше, придумал некоторую работу. Если есть какой-то способ сделать это, это стоит документации. – Nishant