diff options
author | Florian Frank <flori@ping.de> | 2017-05-31 18:48:17 +0200 |
---|---|---|
committer | GitHub <noreply@github.com> | 2017-05-31 18:48:17 +0200 |
commit | 3d69dad9142bfa9678d590e0842f8d8c880c2ec5 (patch) | |
tree | 4e3dc2fd337857ba4f90d6eec13b88d889179c7b | |
parent | 950440a187ad0b0b25706ed199018ede5203a396 (diff) | |
parent | db200469d3e6a74a508cefe62638e601149f1032 (diff) | |
download | json-3d69dad9142bfa9678d590e0842f8d8c880c2ec5.tar.gz |
Merge pull request #330 from perlun/patch-1
README: Fixed code examples to start in the left-most column
-rw-r--r-- | README.md | 38 |
1 files changed, 21 insertions, 17 deletions
@@ -179,14 +179,14 @@ should return a JSON object (a hash converted to JSON with `#to_json`) like this (don't forget the `*a` for all the arguments): ```ruby - class Range - def to_json(*a) - { - 'json_class' => self.class.name, # = 'Range' - 'data' => [ first, last, exclude_end? ] - }.to_json(*a) - end - end +class Range + def to_json(*a) + { + 'json_class' => self.class.name, # = 'Range' + 'data' => [ first, last, exclude_end? ] + }.to_json(*a) + end +end ``` The hash key `json_class` is the class, that will be asked to deserialise the @@ -200,20 +200,24 @@ called with the JSON object converted to a Ruby hash. So a range can be deserialised by implementing `Range.json_create` like this: ```ruby - class Range - def self.json_create(o) - new(*o['data']) - end - end +class Range + def self.json_create(o) + new(*o['data']) + end +end ``` Now it possible to serialise/deserialise ranges as well: ```ruby - json = JSON.generate [1, 2, {"a"=>3.141}, false, true, nil, 4..10] - # => "[1,2,{\"a\":3.141},false,true,null,{\"json_class\":\"Range\",\"data\":[4,10,false]}]" - JSON.parse json, :create_additions => true - # => [1, 2, {"a"=>3.141}, false, true, nil, 4..10] +json = JSON.generate [1, 2, {"a"=>3.141}, false, true, nil, 4..10] +# => "[1,2,{\"a\":3.141},false,true,null,{\"json_class\":\"Range\",\"data\":[4,10,false]}]" +JSON.parse json +# => [1, 2, {"a"=>3.141}, false, true, nil, 4..10] +json = JSON.generate [1, 2, {"a"=>3.141}, false, true, nil, 4..10] +# => "[1,2,{\"a\":3.141},false,true,null,{\"json_class\":\"Range\",\"data\":[4,10,false]}]" +JSON.parse json, :create_additions => true +# => [1, 2, {"a"=>3.141}, false, true, nil, 4..10] ``` `JSON.generate` always creates the shortest possible string representation of a |