a = "{key:'14',data:{order: '154'}}"
JSON.parse(a)
预期的行为:JSON.parse不会解析JSON
{key:'14',data:{order: '154'}}
结果:
SyntaxError: unexpected tIDENTIFIER, expecting end-of-input
a = "{key:'14',data:{order: '154'}}"
JSON.parse(a)
预期的行为:JSON.parse不会解析JSON
{key:'14',data:{order: '154'}}
结果:
SyntaxError: unexpected tIDENTIFIER, expecting end-of-input
您的JSON是无效的。
你应该尝试:
a = '{"key":"14","data":{"order": "154"}}'
JSON.parse(a)
有效的JSON既需要属性和值在双引号括起来。
击败我吧!谷歌这样的在线验证器:http://codebeautify.org/jsonvalidate,它可能会有所帮助。 – user1269942
属性和*字符串*值。 'null','true','false'和数字不应该被引用(除非你想要一个带有这些内容的字符串)。 – Amadan
无效的Json,Json键总是在引号中以使其有效。
它不是JSON。你的散列存储为string
而不是JSON
。所以你需要eval的预期输出:
> a = "{key:'14',data:{order: '154'}}"
> eval(a)
#=> {:key=>"14", :data=>{:order=>"154"}}
让我看看你的哈希值转换成JSON和您展示它的外观以及如何解析JSON。
# sample of your hash
> hash = {key:'14',data:{order: '154'}}
# convert hash to json and assign it to a
> a = hash.to_json
#=> "{\"key\":\"14\",\"data\":{\"order\":\"154\"}}"
# parse correct JSON format
> JSON.parse(a)
#=> {"key"=>"14", "data"=>{"order"=>"154"}}
这是无效的JSON(虽然它将是有效的JavaScript)。这些键需要双引号,而且这些值也用双引号,而不是单引号。验证它在http://jsonlint.com/ –
@ michael如果值是数字,它可以没有引号 – loneshark99
@ loneshark99但在任何情况下都不是单引号有效.. – user2864740