我想在json中对简单字符串进行编码/解码,但是出现错误。在rails中解码JSON简单字符串引发错误
在栏杆2.3。红宝石1.8.6,它曾经工作。
>> puts ActiveSupport::JSON.decode("abc".to_json)
abc
=> nil
在rails 3.1beta1 w/ruby 1.9.2中,会产生一个错误。
ruby-1.9.2-p180 :001 > puts ActiveSupport::JSON.decode("abc".to_json)
MultiJson::DecodeError: 706: unexpected token at '"abc"'
from /home/stevenh/.rvm/rubies/ruby-1.9.2-p180/lib/ruby/1.9.1/json/common.rb:147:in `parse'
from /home/stevenh/.rvm/rubies/ruby-1.9.2-p180/lib/ruby/1.9.1/json/common.rb:147:in `parse'
from /home/stevenh/.rvm/gems/ruby-1.9.2-p180/gems/multi_json-1.0.1/lib/multi_json/engines/json_gem.rb:13:in `decode'
[...]
这是相当多的nil.to_json cannot be parsed back to nil?
讨论同样的问题,但无使用2.3/1.8.7的工作为好。
puts ActiveSupport::JSON.decode(nil.to_json)
nil
这是新常态吗?
由于字符串 “abc” 是无效的JSON一个DecodeError似乎是适当的我。 – polarblau 2011-05-28 12:54:47
我必须同意@polarblau,尤其是因为: ruby-1.9.2-p180:012> ActiveSupport :: JSON.decode({:abc =>“test”}。to_json) => {“abc”= >“test”} – Yardboy 2011-06-06 18:34:58
@polarblau,@Yardboy:我不同意:'ActiveSupport :: JSON.decode(“abc”.to_json)'解码'“\”abc \“”'而不是“abc”。问题在于解码器对于简单的字符串无法正常工作。 – moritz 2011-06-17 18:17:58