YAML vs JSON is something very much not settled in Perl, and I will admit I tend to be in the middle of that. I would advice that either is going to get you about as much community traction. I'd make the decision based on the various pros and cons of the formats. I break down the various data serializing options like so (I'm going to community wiki this so people can add to it):
YAML Pros
- Human friendly, people write basic YAML without even knowing it
- WYSIWYG strings
- Expressive (it has the TMTOWDI nature)
- Expandable type/metadata system
- Perl compatible data types
- Portable
- Familiar (a lot of the inline and string syntax looks like Perl code)
- Good implementations if you have a compiler (YAML::XS)
- Good ability to dump Perl data
- Compact use of screen space (possible, you can format to fit in one line)
YAML Cons
- Large spec
- Unreliable/incomplete pure Perl implementations
- Whitespace as syntax can be contentious.
JSON Pros
- Human readable/writable
- Small spec
- Good implementations
- Portable
- Perlish syntax
- YAML 1.2 is a superset of JSON
- Compact use of screen space
- Perl friendly data types
- Lots of things handle JSON
JSON Cons
- Strings are not WYSIWYG
- No expandability
- Some Perl structures have to be expressed ad-hoc (objects & globs)
- Lack of expressibility
XML Pros
- Widespread use
- Syntax familiar to web developers
- Large corpus of good XML modules
- Schemas
- Technologies to search and transform the data
- Portable
XML Cons
- Tedious for humans to read and write
- Data structures foreign to Perl
- Lack of expressibility
- Large spec
- Verbose
Perl/Data::Dumper Pros
- No dependencies
- Surprisingly compact (with the right flags)
- Perl friendly
- Can dump pretty much anything (via DDS)
- Expressive
- Compact use of screen space
- WYSIWYG strings
- Familiar
Perl/Data::Dumper Cons
- Non-portable (to other languages)
- Insecure (without heroic measures)
- Inscrutable to non-Perl programmers
Storable Pros
- Compact? (don't have numbers to back it up)
- Fast? (don't have numbers to back it up)
Storable Cons
- Human hostile
- Incompatible across Storable versions
- Non-portable (to other languages)
No comments:
Post a Comment