Помогите Работа с yaml

Статус
Закрыто для дальнейших ответов.

Zemf4you

Активный участник
Пользователь
Баллы
76
Имя в Minecraft
zemf4you
Интересует бест практис у плагиноделов. Вы используете org.bukkit.configuration.file.YamlConfiguration или какую-нибудь стороннюю библиотеку для удобной работы?
Столкнулся с желанием создать конструкцию вида Map<String, Map<String, Any>>. Можете привести пример, как с помощью стандартного Api таковую конструкцию достать из файла конфигурации? Я так полагаю, нужно работать с ConfigurationSection. Буду благодарен любой стоящей документации.
 
Да под капотом Map<String, Object> кастуй во что нужно тебе и все.
 
Да под капотом Map<String, Object> кастуй во что нужно тебе и все.
А за такое в приличном обществе по рукам не бьют?
и что именно кастовать?
Есть у меня, например, конфиг вида
Код:
test:
  test1:
    val1: Any
    val2: Any
  test2:
    val1: Any
    val2: Any
и я должен кастануть
Код:
config.get("test")
верно, полагаю?
Насколько я вижу, YamlConfiguration не имеет метода getMap. Как я могу кастовать мап, если мне его ещё получить надо?
 
Последнее редактирование:
getConfigurationSection('test').getKeys(false)
>> test1
>> test2
 
Ну ConfigurationSection и есть твоя мапа, кастуй ее к своему типу и все. И получишь свой Map<String, Map<String, String>> = config.get("test")
 
Последнее редактирование:
Ну ConfigurationSection и есть твоя мапа, кастуй ее к своему типу и все. И получишь свой Map<String, Map<String, String>> = config.get("test")
получаю закономерное
Код:
java.lang.ClassCastException: org.bukkit.configuration.MemorySection cannot be cast to java.base/java.util.Map
 
Использую HOCON в связке с kotlin-либой для него. Разница в том, что он имеет JSON/.conf формат
 
Выглядит интересно, обязательно попробую, спасибо. А что насчёт нативного способа?
Использую config.getConfigurationSection("test1").getValues(false). Он вернёт мапу вида
{ "val1":"Any", "val2":"Any" }
 
Так же попробуй вот эту штукуupload_2021-3-4_21-3-48.png
 
Использую config.getConfigurationSection("test1").getValues(false). Он вернёт мапу вида
{ "val1":"Any", "val2":"Any" }
Большое спасибо, всё работает
UPD: написал вот такой рекурсионный костыль на kotlin, потому что getValues возвращал в качестве значений MemorySection, а не мапы в свою очередь, где это нужно было
PSkSe4f.png

E3HqPqc.png
 
Последнее редактирование:
Статус
Закрыто для дальнейших ответов.
Назад
Верх