Groovy 3 adds the YamlBuilder class to create YAML output using a Groovy syntax. The YamlBuilder is closely related to JsonBuilder that is described in a previous post. We define a hierarchy using a builder syntax where we can use primitive types, strings, collections and objects. Once we have build our structure we can use the toString() method to get a string representation in YAML format.

In the following example we use YamlBuilder to create YAML:

import groovy.yaml.YamlBuilder // Sample class and object to transform in YAML. class User { String firstName, lastName, alias, website } def userObj = new User(firstName: 'Hubert', lastName: 'Klein Ikkink', alias: 'mrhaki', website: 'https://www.mrhaki.com/') // Create YamlBuilder. def config = new YamlBuilder() config { application 'Sample App' version '1.0.1' autoStart true // We can nest YAML content. database { url 'jdbc:db//localhost' } // We can use varargs arguments that will // turn into a list. // We could also use a Collection argument. services 'ws1', 'ws2' // We can even apply a closure to each // collection element. environments(['dev', 'acc']) { env -> name env.toUpperCase() active true } // Objects with their properties can be converted. user(userObj) } assert config.toString() == '''\ --- application: "Sample App" version: "1.0.1" autoStart: true database: url: "jdbc:db//localhost" services: - "ws1" - "ws2" environments: - name: "DEV" active: true - name: "ACC" active: true user: firstName: "Hubert" alias: "mrhaki" lastName: "Klein Ikkink" website: "https://www.mrhaki.com/" '''

Written with Groovy 3.0.0.