Ruby
JSON

Rubyでnullや数値だけからなるjsonをパースする方法

More than 3 years have passed since last update.

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