Skip to content

Instantly share code, notes, and snippets.

@jamiejackson
Last active May 18, 2023 01:40
Show Gist options
  • Save jamiejackson/a8ecb38d47abd40e5143940b7e5a8916 to your computer and use it in GitHub Desktop.
Save jamiejackson/a8ecb38d47abd40e5143940b7e5a8916 to your computer and use it in GitHub Desktop.
Read/Write YAML from CFML (Lucee & Adobe ColdFusion)

This is based on Ortus's version, but this returns native CFML arrays/structs.

component {
public any function init() {
_setupYamlParser();
return this;
}
public any function YAMLToCFML( required string yaml ) {
var results = _getYamlParser().load( arguments.yaml );
return deserializeJSON(serializeJSON(results)) ?: {};
}
public any function CFMLToYAML( required any data ) {
return _getYamlParser().dump( arguments.data );
}
// PRIVATE
private void function _setupYamlParser() {
var javaLib = [ "/app/lib/yamlparser/snakeyaml.jar" ];
var parser = CreateObject( "java", "org.yaml.snakeyaml.Yaml", javaLib ).init();
_setYamlParser( parser );
}
private any function _getYamlParser() output=false {
return _yamlParser;
}
private void function _setYamlParser( required any yamlParser ) output=false {
_yamlParser = arguments.yamlParser;
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment