Рубрики
Без рубрики

Современный YAML Для Современной Java

Представляем eo-yaml, новый процессор YAML, основанный на API, для Java 8 и выше. Помеченный java, ооп, yaml.

Поскольку в 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”