2016-07-30 9 views
2

JSON.parseをしばらく使用しており、最新バージョンに更新しました。`JSON.parse`が例外をスローしないのはなぜですか?

次のエラーが発生しています。

ParserErrorを投げる代わりにnilを返すように機能が更新されましたか?あなたがチェックアウトして確認することができた機能を、期待されているJSON.parse("null")nilを返し、そう

A JSON value MUST be an object, array, number, or string, or one of the following three literal names:

false null true 

The literal names MUST be lowercase. No other literal names are allowed.

2.3.0 :001 > gem 'json', '2.0.2' 
=> true 
2.3.0 :002 > require 'json' 
=> true 
2.3.0 :003 > JSON.parse("null") 
=> nil 

2.3.0 :001 > gem 'json', '1.8.3' 
=> true 
2.3.0 :003 > require 'json' 
=> true 
2.3.0 :004 > JSON.parse("null") 
JSON::ParserError: 784: unexpected token at 'null' 
    from /Users/ryannealmes/.rvm/rubies/ruby-2.3.0/lib/ruby/2.3.0/json/common.rb:156:in `parse' 
    from /Users/ryannealmes/.rvm/rubies/ruby-2.3.0/lib/ruby/2.3.0/json/common.rb:156:in `parse' 
    from (irb):4 
    from /Users/ryannealmes/.rvm/rubies/ruby-2.3.0/bin/irb:11:in `<main>' 
2.3.0 :005 > 

答えて

5

機能が言うJSON specification according to RFC 7159、遵守するように更新されましたtests for parsing single values

+0

この[バグレポート](https://bugs.ruby-lang.org/issues/10143)では、RFC 7159に準拠した 'parse'式がありますが、' JSON :: ParserError: 'エラーが発生しています。 'JSON.parse(これは文字列です)'、 'JSON.parse(42)'、 'JSON.parse(true)'はすべて例外を発生させることを確認しました(Ruby 2.3.0/JSON 2.0.2の場合:) 'JSON.parse(" null ")#=> nil' –

+0

@CarySwoveland [テストスイートへのリンク]を確認してください(https://github.com/flori/json/blob/master/tests/json_parser_test.rb #L43)すべての値をRuby文字列として渡す必要があるため、入力のフォーマット方法については、 'JSON.parse(' "これは文字列" ')=> "これは文字列です"、 'JSON.parse('42')=> 42'、' JSON.parse ( 'true')=> true'を返します。 –

+0

私は理解しています。ありがとう。 –

関連する問題