这段代码抛出异常:nil.to_json不能解析回nil?
x = nil
jsoned = x.to_json
puts 'x.to_json=' + jsoned.inspect
puts 'back=' + JSON.parse(jsoned).inspect
C:/ruby/lib/ruby/1.9.1/json/common.rb:146:in `parse': 706: unexpected token at 'null' (JSON::ParserError)
x.to_json="null"
from C:/ruby/lib/ruby/1.9.1/json/common.rb:146:in `parse'
from C:/dev/prototyping/appoxy_app_engine/test/temp.rb:10:in `<top (required)>'
from -e:1:in `load'
from -e:1:in `<main>'
那是预期的行为?我会认为这应该工作?
你还没有,本身,回答了这个问题。是to_json错误地产生“无效的”JSON,或者是JSON.parse无法解析“有效的”JSON?无论哪种方式,这不应该是红宝石内的行为。我希望序列化/反序列化能够彼此保持一致,而不管底层媒体如何。 – ghayes 2013-06-05 22:52:02
都不:to_json正确生成无效的JSON。当你调用to_json的单个值,例如nil时,你实际上是在说:“告诉我该值如何表示为JSON值。”在某些情况下这是明智的做法,但非对象非数组值仍然不是有效的JSON文本。 – 2013-12-28 15:07:19