這段代碼拋出異常: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