【发布时间】:2013-09-02 22:54:08
【问题描述】:
我使用 'gem json' 并且需要从一些 url 加载 JSON 数据,例如:
"http://locallhost:3000/qwerty/give_json.json" 与
{"one":"Omg","two":125,"three":"Hu"}
我有 Rails 应用程序
class QwertyController < ApplicationController
require 'json'
def get_json
source = "http://localhost:3000/qwerty/give_json.json"
@data = JSON.parse(JSON.load(source))
end
end
我得到错误
JSON::ParserError in QwertyController#get_json
795: unexpected token at 'http://localhost:3000/qwerty/give_json.json'
在字符串中:@data = JSON.parse(JSON.load(source))
这是怎么回事?如何获取 JSON 数据并对其进行解析?我试试@data["one"] ...
【问题讨论】:
-
看起来您的源中的 JSON 无效
-
不,不是。我创建了一个 Rails 应用程序,它在端口 3000 (localhost:3000/qwerty/give_json.json) 上生成 JSON 答案。第二个应用程序,它尝试在端口 3001 (localhost:3001/qwerty/get_json) 上获取 JSON 数据
-
您使用的是什么版本的 ruby?您不需要在较新版本的 rails 和 ruby 中使用 json...
-
alexkd@Active-pc:~$ ruby -v ruby 1.9.3p448 (2013-06-27 修订版 41675) [i686-linux] alexkd@Active-pc:~$ rails -v Rails 4.0 .0
-
是的,您确实有无效的 JSON。您在 URL 字符串上调用 JSON.load,而不是 JSON 对象。那是无效的 JSON。 JSON.load 不会从 url 读取数据,你只是在传递字符串
标签: ruby-on-rails ruby json parsing