Бесконечный конфиг

Версия Minecraft
1.7.10
1,417
44
594
Добрый день, подскажите, пожалуйста, как сделать некий конфиг, в котором можно как бы регистрировать некоторые вещи. Например есть у меня кнопки для гуишки, и регистрировать я хочу их через конфиг с указаниями x и y координаты, и кол-во строк в конфиге не постоянно. Думал о GSON но что-то нашел мало информации об этом.
 
Решение
Kotlin:
fun foo() {
    val gson = GsonBuilder().create()

    val myList = ArrayList<String>()

    val jsonString = gson.toJson(myList)

    val obj = gson.fromJson<ArrayList<String>>(jsonString)
}

inline fun <reified T> Gson.fromJson(json: String): T? {
    return fromJson(json, object : TypeToken<T>() {}.type)
}
2,505
81
397
Kotlin:
fun foo() {
    val gson = GsonBuilder().create()

    val myList = ArrayList<String>()

    val jsonString = gson.toJson(myList)

    val obj = gson.fromJson<ArrayList<String>>(jsonString)
}

inline fun <reified T> Gson.fromJson(json: String): T? {
    return fromJson(json, object : TypeToken<T>() {}.type)
}
 
2,505
81
397
Это инлайн экстеншен функция.
Вызывается тут: gson.fromJson<ArrayList<String>>(jsonString)

Аналог в джаве такой:
Java:
Type type = new TypeToken<ArrayList<String>>() {}.getType();
ArrayList<String> obj = gson.fromJson("qweqwe", type);

Если бы у тебя был какой-нибудь простой объект класса MyClass, то можно просто gson.fromJson("qweqwe", MyClass.class). А из-за того, что нужен дженерик массив, то нужно получить Type через TypeToken. Иначе у тебя в рантайме считается массив простых строк (или какие-нибудь линкед мапы, не помню точно), а не массив дженерик объектов.
 
Последнее редактирование:
1,417
44
594
Все равно не въезжаю.
Java:
    public static void foo() {
        Gson gson = new GsonBuilder().create();
        List<Qe> myList = new ArrayList<Qe>();
        String jsonString = gson.toJson(myList);
        [COLOR=rgb(184, 49, 47)]Qeobj = gson.fromJson("qweqwe", Qe.class);[/COLOR]
    }
В Qe
Код:
public Qe(int id, int[] pid, int x, int y) {
...
}
Но краш жалуется на строчку вверху с ошибкой
com.google.gson.JsonSyntaxException: java.lang.IllegalStateException: Expected BEGIN_OBJECT but was STRING at line 1 column 1
В чем проблема @Dahaka , не подскажешь?
 
2,505
81
397
Проблема в "qweqwe" :)

Java:
public static void foo() {
    Gson gson = new GsonBuilder().create();

    // Это список твоих объект. Еще его нужно чем-то заполнить. Не пустой же записывать.
    List<Qe> myList = new ArrayList<Qe>();

    // Конвертим список с джейсон строку.
    String jsonString = gson.toJson(myList);

    // Достаем тип списка
    Type type = new TypeToken<ArrayList<Qe>>() {}.getType();

    // Конвертим джейсон строку обратно в список твоих объектов.
    ArrayList<Qe> obj = gson.fromJson(jsonString, type);
}
 
Последнее редактирование:
Сверху