Преобразование JSON в YAML в Groovy/Jenkins: несколько методов, объясненных примерами кода

В современных рабочих процессах разработки программного обеспечения и DevOps обычно приходится работать с различными форматами данных, такими как JSON и YAML. Хотя JSON (нотация объектов JavaScript) широко используется для обмена данными, YAML (YAML не является языком разметки) обычно используется для файлов конфигурации. В этом сообщении блога мы рассмотрим различные методы преобразования JSON в YAML с помощью Groovy, мощного языка сценариев, часто используемого в конвейерах Jenkins.

Метод 1. Использование библиотеки YAML
Один из самых простых способов преобразования JSON в YAML в Groovy — использование библиотеки YAML. Доступно несколько библиотек, которые могут обрабатывать преобразования YAML. В качестве примера рассмотрим библиотеку Snakeyaml:

@Grab('org.yaml:snakeyaml:1.29')
import org.yaml.snakeyaml.Yaml
import groovy.json.JsonSlurper
def jsonToYaml(String json) {
    def jsonSlurper = new JsonSlurper()
    def jsonObject = jsonSlurper.parseText(json)

    def yaml = new Yaml()
    return yaml.dump(jsonObject)
}
def json = '{"name": "John", "age": 30, "city": "New York"}'
def yamlOutput = jsonToYaml(json)
println yamlOutput

Метод 2: использование Groovy MarkupBuilder
Другой подход — использовать Groovy MarkupBuilder, который позволяет нам генерировать XML, HTML и даже YAML. Вот пример преобразования JSON в YAML с помощью MarkupBuilder:

import groovy.json.JsonSlurper
def jsonToYaml(String json) {
    def jsonSlurper = new JsonSlurper()
    def jsonObject = jsonSlurper.parseText(json)
    def builder = new groovy.xml.MarkupBuilder()
    def yaml = builder.yamlish {
        jsonObject.each { key, value ->
            "${key}"("$value")
        }
    }

    return yaml.toString()
}
def json = '{"name": "John", "age": 30, "city": "New York"}'
def yamlOutput = jsonToYaml(json)
println yamlOutput

Метод 3: использование Jackson
Jackson — это популярная библиотека Java для обработки JSON, которую также можно использовать в Groovy для преобразования JSON в YAML. Вот пример:

@Grab('com.fasterxml.jackson.dataformat:jackson-dataformat-yaml:2.12.5')
import com.fasterxml.jackson.databind.ObjectMapper
import com.fasterxml.jackson.dataformat.yaml.YAMLFactory
import groovy.json.JsonSlurper
def jsonToYaml(String json) {
    def jsonSlurper = new JsonSlurper()
    def jsonObject = jsonSlurper.parseText(json)
    def objectMapper = new ObjectMapper(new YAMLFactory())
    return objectMapper.writeValueAsString(jsonObject)
}
def json = '{"name": "John", "age": 30, "city": "New York"}'
def yamlOutput = jsonToYaml(json)
println yamlOutput

В этой статье мы рассмотрели несколько методов преобразования JSON в YAML в конвейерах Groovy/Jenkins. Мы обсудили использование библиотек YAML, таких как Snakeyaml, использование MarkupBuilder Groovy и библиотеки Jackson. В зависимости от ваших конкретных требований и предпочтений вы можете выбрать метод, который наилучшим образом соответствует вашим потребностям. Используя эти методы преобразования, вы можете легко интегрировать JSON и YAML в свои рабочие процессы автоматизации, обеспечивая эффективное управление конфигурацией и обмен данными.

Не забудьте проверить документацию библиотек для более подробного использования и обработки ошибок. Удачной конвертации!