GSON возвращает StackOverflowError: null - PullRequest
0 голосов
/ 20 июня 2019

Я пытаюсь преобразовать мой HashMap в строку JSON, используя библиотеку Google. GSON.

Я пытался использовать ObjectMapper Джексона, но он тоже не работал. Я пытался поместить некоторые переходные и некоторые вещи, которые я нашел, на другие темы, но безуспешно.

В настоящее время возвращается ошибка (без указания какой-либо строки):

//ERROR 
java.lang.StackOverflowError: null
    at sun.reflect.misc.ReflectUtil.checkPackageAccess(Unknown Source) ~[?:1.8.0_201]
    at sun.reflect.misc.ReflectUtil.checkPackageAccess(Unknown Source) ~[?:1.8.0_201]
    at sun.reflect.generics.reflectiveObjects.TypeVariableImpl.getGenericDeclaration(Unknown Source) ~[?:1.8.0_201]
    at com.google.gson.internal.$Gson$Types.declaringClassOf($Gson$Types.java:427) ~[$Gson$Types.class:?]
    at com.google.gson.internal.$Gson$Types.resolveTypeVariable($Gson$Types.java:397) ~[$Gson$Types.class:?]
    at com.google.gson.internal.$Gson$Types.resolve($Gson$Types.java:329) ~[$Gson$Types.class:?]
    at com.google.gson.internal.bind.ReflectiveTypeAdapterFactory.getBoundFields(ReflectiveTypeAdapterFactory.java:158) ~[ReflectiveTypeAdapterFactory.class:?]
    at com.google.gson.internal.bind.ReflectiveTypeAdapterFactory.create(ReflectiveTypeAdapterFactory.java:100) ~[ReflectiveTypeAdapterFactory.class:?]
    at com.google.gson.Gson.getAdapter(Gson.java:423) ~[Gson.class:?]
    at com.google.gson.internal.bind.ReflectiveTypeAdapterFactory.createBoundField(ReflectiveTypeAdapterFactory.java:115) ~[ReflectiveTypeAdapterFactory.class:?]

// HashMap I need in JSON
public class Storage {

    static @Getter @Setter HashMap<World, HashMap<Chunk, List<Particle>>> storage = new HashMap<>();

}
// Class to load/save the data file
public class StorageManager {

    public static File folder, config;
    private static final Gson GSON = new Gson();

    public static void setup(File _folder){
        folder = _folder;
    }

    public static void load() throws IOException {
        if(!folder.exists())
            folder.mkdir();
        config = new File(folder, "particles.json");
        if(!config.exists()) {
            config.createNewFile();
            FileWriter writer = new FileWriter(config, false);
            writer.write(GSON.toJson(Storage.getStorage()));
            writer.close();
        }
        FileReader content = new FileReader(config);
        Type type = new TypeToken<HashMap<World, HashMap<Chunk, List<Particle>>>>(){}.getType();
        Storage.setStorage(GSON.fromJson(content, type));
    }

    public static void save() throws IOException {
        String json = GSON.toJson(Storage.getStorage());
        FileWriter writer = new FileWriter(config, false);
        writer.write(json);
        writer.close();
    }

}

Мне нужно иметь возможность загрузить файл, получить JSON и заменить мой в настоящее время пустой Hashmap данными из файла. Мне также нужно сохранить файл с новыми данными Hashmap.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...