Войти или зарегистрироваться
  • Вы находитесь в сообществе Rubukkit. Мы - администраторы серверов Minecraft, разрабатываем собственные плагины и переводим на различные языки плагины наших коллег из других стран.

Помогите Получить строки из объекта в Yaml конфиге

Метки:
Теги Теги
bukkit config java string yaml
Статус
Закрыто для дальнейших ответов.

NyanGuyMF

Активный участник
Пользователь
Баллы
76
Имя в Minecraft
_voidpointer
Как получить все строки из подобного конфига и добавить их в массив?
PHP:
main:
  sub1: 'Строчка 1'
  sub2: 'Строчка 2'
  subN: 'Строчка N'

UPD:
Вариант через
PHP:
cfg.getString("main.sub1");
не подойдет :D
 
Последнее редактирование:
Код:
List<String> keys = getConfig().getConfigurationSection("main").getKeys(false);

String[] array = new String[keys.size()];
for(int i = 0; i < array.length; i++) {
  array[i] = keys.get(i);
}

//array == [sub1, sub2, subN]

String[] values = new String[keys.size()];
for(int i = 0; i < values.length; i++) {
  values = getConfig().getString("main." + keys.get(i));
}

//values == [Строчка 1, Строчка 2, Строчка N]
 
Последнее редактирование:
Как получить все строки из подобного конфига и добавить их в массив?
PHP:
main:
  sub1: 'Строчка 1'
  sub2: 'Строчка 2'
  subN: 'Строчка N'

UPD:
Вариант через
PHP:
cfg.getString("main.sub1");
не подойдет :D
PHP:
FileConfiguration config = ...;

// Получаем секцию 'main'
ConfigurationSection mainSection = config.getConfigurationSection("main");
// Перебираем все ключи (false значит что мы берем только ключи 1 уровня, тобишь это будут sub1, sub2....)
for (String key : mainSection.getKeys(false)) {
    String str = mainSection.getString(key); // Либо config.getString("main." + key);
    // Профит
}
 
Не надоело дрочить ведроконфиги? Переходите на gson.
Пробовал, хрень. Для пользовательских конфигов очень неудобно. Достаточно комплексные конфиги будут очень плохо читаемы из-за строгого форматирования. Yaml вполне приличен, правда мне пришлось немного его кастомизировать под себя.
 
PHP:
for (String key : mainSection.getKeys(false)) {
    String str = mainSection.getString(key); // Либо config.getString("main." + key);
    // Профит
}

Не совсем понимаю, как добавить эти строки в массив. Как получить размер секции, чтобы задать размер массива? Или есть другой способ? :D
 
Возвращает тип Set, а при преобразовании выдает ошибку вида

PHP:
java.util.LinkedHashSet cannot be cast to java.util.List
Давно не юзал Yaml конфиги, думал getKeys возвращает List =)

Set<String> keys = getConfig().getConfigurationSection("main").getKeys(false);
 
Всем спасибо, решил проблему так:

PHP:
        ConfigurationSection    helpSection = MessagesManager.getConfig().getConfigurationSection("in-clan");
        String[]                help        = new String[helpSection.getKeys(false).size()];

        int counter = 0;
        for (String key : helpSection.getKeys(false)) {
            String str      = helpSection.getString(key); // Либо config.getString("main." + key);
            help[counter]   = str;
            counter++;
        }
 
Статус
Закрыто для дальнейших ответов.

Поделиться этой страницей

Назад
Верх