Как сериализовать карту карты с помощью 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);
    }
}

Я ожидал получить следующий результат:

{"General":{"Version":"0.1","Range":{"Start_Time":"now","End_Time":"never"}}}

Но вызов функции toJSON () возвращает

{"General":{"Version":"0.1","Range":{}}}

Похоже, что GSON не может сериализовать Map Range внутри Map General . Это ограничение GSON или я здесь что-то делаю не так?

11
задан StaxMan 28 December 2010 в 18:25
поделиться