JSON.parse不会解析JSON

时间:2015-12-25 01:26:56

标签: ruby-on-rails ruby json

a = "{key:'14',data:{order: '154'}}"

JSON.parse(a)

预期行为:

{key:'14',data:{order: '154'}}

结果:

SyntaxError: unexpected tIDENTIFIER, expecting end-of-input

3 个答案:

答案 0 :(得分:5)

您的JSON无效。

你应该尝试:

a = '{"key":"14","data":{"order": "154"}}'

JSON.parse(a)

有效的JSON要求将属性和值括在双引号中。

答案 1 :(得分:0)

Json无效,Json密钥始终在引号中以使其有效。

答案 2 :(得分:0)

这不是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"}}