Home > Groovy > SnakeYAML and Groovy

SnakeYAML and Groovy

I had some fun playing with SnakeYAML and Groovy the other day. Below are some of my results. If you want to run this in your groovyConsole, you need to download SnakeYAML and add the snakeyaml-<version>.jar to your classpath.

From YAML to Groovy:

import org.yaml.snakeyaml.Yaml

Yaml yaml = new Yaml()
def obj = yaml.load("""
a: 1
b: 2
c:
  - aaa
  - bbb""")

assert obj.a == 1
assert obj.b == 2
assert obj.c == ["aaa", "bbb"]

From Groovy to YAML:

import org.yaml.snakeyaml.Yaml

def map = [name: "Pushkin", aliases: ['P', 'Push']]
Yaml yaml = new Yaml()
String output = yaml.dump(map)

assert output ==
'''name: Pushkin
aliases: [P, Push]
'''

Isn’t YAML so much simpler and cleaner than XML? Why aren’t more of us using YAML with Java and Groovy?

About these ads
  1. hbagchi
    January 19, 2010 at 9:23 pm

    What is the benefit of using YAML vis-a-vis JSON? Looks like to JSON to me?

  2. January 21, 2010 at 8:30 pm

    @hbagchi According to the YAML 1.2 spec, YAML is an official subset of JSON, so you’re right – it does look like JSON. I don’t yet know the benefits of YAML vs. JSON – I was looking at YAML vs. XML, since I knew that Ruby and Rails seemed to prefer YAML over XML.

  3. alex
    April 21, 2010 at 7:34 am

    @hbagchi : I guess JSON does not support recursive objects.

  4. February 25, 2012 at 6:12 pm

    very useful post
    BTW, I had troubles escaping chars with snake yaml

    could anybody give a hand with this question: http://stackoverflow.com/questions/9448918/snakeyaml-escaping-new-line-characters-in-yaml

  1. January 14, 2010 at 2:33 am

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s

Follow

Get every new post delivered to your Inbox.

%d bloggers like this: