Поскольку в Java нет стандартного API для YAML и поскольку, начиная с YAML 1.2, формат должен быть надмножеством JSON, мы решили создать анализатор, который точно соответствует API и инкапсуляции JSON-P (JSR 374) . С учетом этой идеи eo-yaml обрел форму.
В отличие от других библиотек YAML на рынке, eo-yaml полностью инкапсулирован и имеет дизайн, основанный на API – пользователь работает только с несколькими интуитивно понятными интерфейсами Java, все реализации скрыты. Это также открывает двери для разных поставщиков: вам не нравится эталонная реализация? Круто, реализуйте эти интерфейсы самостоятельно и продолжайте использовать один и тот же API.
Использование
Точкой входа для создания, чтения, сброса или загрузки YAML является класс ком.амихайемил.эоямл. Yaml . Вот краткий обзор:
Построение YAML
final YamlMapping team = Yaml.createYamlMappingBuilder()
.add("architect", "amihaiemil")
.add(
"devops",
Yaml.createYamlSequenceBuilder()
.add("rultor")
.add("0pdd")
.build("DevOps Tools")
).add(
"developers",
Yaml.createYamlSequenceBuilder()
.add("amihaiemil")
.add("salikjan")
.add("SherifWally")
.build()
).build("Project Team");
System.out.println(team); //toString() methods overriden to pretty-print the YAML
Напечатанный YAML будет:
# Project Team architect: amihaiemil # DevOps Tools devops: - rultor - 0pdd developers: - amihaiemil - salikjan - SherifWally
Чтение YAML
Чтение YAML так же просто, как (вы можете читать из файла , из входного потока или из строки ):
final YamlMapping team = Yaml.createYamlInput(
new File("team.yml")
).readYamlMapping();
Сброс YAML (от компонента к Yaml)
final YamlMapping student = Yaml.createYamlDump(
new Student(...)//bean with getters and setters
).dump();
API интегрирован с JDK, где это возможно: например, последовательность Yaml реализует Повторяющийся и поток Yaml (коллекция большего количества документов YAML) реализует потоковый API Java 8.
Библиотека является и будет в основном совместимой с Java 8. Однако он упакован в виде модуля, поэтому его можно использовать как таковой, если вы используете Java 9 или выше.
Поскольку он основан на интерфейсах, вы можете легко создавать свои собственные декораторы или реализации поверх существующих для улучшения или создания новых функций. Подробнее в Wiki .
На данный момент мы выпускаем новую версию, содержащую исправления и функции, примерно раз в неделю. У нас есть умный чат-бот, который позволяет нам публиковать в Maven Central только один комментарий. Посмотрите, как прошел последний выпуск здесь .
В заключение мы надеемся, что предоставили хороший обзор продукта и надеемся, что как можно больше пользователей попробуют его. Не стесняйтесь открывать выпуск Github по любой проблеме, вопросу или запросу на функции, которые у вас могут возникнуть, мы постараемся помочь как можно быстрее.
Оригинал: “https://dev.to/amihaiemil/modern-yaml-for-modern-java-1f9g”