如何在Ruby中以正确的格式返回JSON?

时间:2013-03-26 20:20:02

标签: ruby-on-rails ruby json

当我尝试以上面显示的格式返回JSON时,我的JSON看起来像这样

result = JSON.parse(data)
p result.to_json

#json from .to_json
\"is_claimed\": true,
\"rating\": 3.5,
\"mobile_url\": \"http: //m.yelp.com/biz/rudys-barbershop-seattle\",
...

当我使用“p result”代替(没有.to_json)时,我得到以下内容:

"is_claimed"=>true,
"rating"=>3.5,
"mobile_url"=>"http://m.yelp.com/biz/rudys-barbershop-seattle",
....

第一个使用'\'字符,第二个使用哈希火箭。如何以正常格式返回JSON?

3 个答案:

答案 0 :(得分:4)

您看到的格式是因为p输出信息的方式,请尝试将输出更改为puts

data = '{
  "is_claimed":true,
  "rating":3.5,
  "mobile_url":"http://m.yelp.com/biz/rudys-barbershop-seattle"
}'
result = JSON.parse(data)
puts result.to_json

编辑:有关pputs的一些其他信息:p vs puts in Ruby

答案 1 :(得分:0)

那是因为您使用p来显示string的内容。

p "hi\"there"
"hi\"there"
=> "hi\"there"
[2] pry(main)> puts "hi\"there"
hi"there

此外,您可能应该了解方法as_jsonto_json之间的区别,请参阅http://jonathanjulian.com/2010/04/rails-to_json-or-as_json/以了解其中的差异。

答案 2 :(得分:0)

不确定“正常格式”是什么意思,我有时会把它说出来

puts JSON.generate(result)

以友好的格式获取它。