JsonPrinter
allows you to convert arbitrarily nested Ruby data structures into
human-and-machine-readable JSON output. The input data can be any combination
of arrays, hashes, symbols, strings, numbers, times, and false, true, and nil values.
data =
{"attribute" => "value",
"blank" => nil,
"list" =>
[true,
2,
"elem_number_three"],
"nested_hash" =>
{"key" => 7,
"other_key" => 13.5}}
JsonPrinter.render(data)
#=>
{"nested_hash":
{"other_key": 13.5,
"key": 7},
"list":
[true,
2,
"elem_number_three"],
"blank": null,
"attribute": "value"}
JSON.parse(JsonPrinter.render(data)) == data
#=> true
The printer recognizes instances of ActiveSupport::OrderedHash
or other Hash-like objects responding to #keys
and will render their attributes in order:
data =
ActiveSupport::OrderedHash.new(
[["foo", "bar"], ["biz", "bat"], ["cat", "hat"]])
JsonPrinter.render(data)
#=>
{"foo": "bar",
"biz": "bat",
"cat", "hat"}
Copyright 2009 Mark McGranaghan and released under an MIT license.