JSONY - Relaxed JSON with a little bit of YAML


    use JSONY;

    my $data = decode_jsony $jsony_string;


JSONY is a data language that is simlar to JSON, just more chill. All valid JSON is also valid JSONY (and represents the same thing when decoded), but JSONY lets you omit a lot of the syntax that makes JSON a pain to write.


JSONY exports one function: decode_jsony. You pass it a JSONY string and it returns the decoded Perl data object.


Here is some examples of JSONY followed by equivalent JSON:

Words don't need quotes. A list of things is an array:

    foo bar baz

    [ "foo", "bar", "baz" ]

Strings with spaces can use single or double quotes:

    'foo bar'      # <= This is (a comment indicating) a string
    # More commenting
    "baz  boom "

    [ "foo bar ", "baz  boom " ]

Top level hashes can be ':' separated pairs or use curlies. Sub hashes require curlies.

    foo: { bar baz }
    num: -1.2e3

    { "foo": { "bar": "baz" }, "num": -1.2e3 }

Top level arrays can use '- ' at the start of lines. Those arrays go the end of line. Lines can be continued using a trailing comma. Sub arrays require square brackets.

    - array of 4 scalars
    - array with [ sub
      array { of
      things }]
    - array of 7 things on,
      two lines

      [ "array", "of", 4, "scalars" ],
      [ "array", "with", [ "sub", "array" { "of", "things" } ] ],
      [ "array", "of", 7, "things", on, "two", "lines" ]

More soon...

NOTE: You may want to look at the tests (especially t/decode.t) to see the full abilities of JSONY.



JSONY is mst's idea, and ingy's Pegex based implementation. The language is just a baby, and will change a lot, or may go away entirely.

Development people are currently working on this in #jsony in Please drop by. coming soon.


Ingy döt Net (ingy) <>

Matt S. Trout (mst) <>


Copyright (c) 2012 Ingy döt Net


This library is free software and may be distributed under the same terms as perl itself.