Rubyで標準ライブラリを用いてjsonをパースする際、null
や数値
だけをパースすると例外が投げられます
pry(main)> require 'json'
=> true
pry(main)> JSON.parse('null')
JSON::ParserError: 757: unexpected token at 'null'
from ~/.rbenv/versions/2.1.1/lib/ruby/2.1.0/json/common.rb:155:in `parse`
pry(main)> JSON.parse('33')
JSON::ParserError: 757: unexpected token at '33'
from ~/.rbenv/versions/2.1.1/lib/ruby/2.1.0/json/common.rb:155:in `parse`
もはやjsonじゃ無い気もするので自然な挙動ではありますが、quirks_mode
というオプションをtrue
に設定してやると良い感じに変換してくれる様です。
pry(main)> JSON.parse('null', quirks_mode: true)
=> nil
pry(main)> JSON.parse('33', quirks_mode: true)
=> 33
参考
https://github.com/flori/json/issues/131
http://stackoverflow.com/questions/3552328/nil-to-json-cannot-be-parsed-back-to-nil