Ruby on Rails et parser JSON à partir de l'URL
- Je utiliser "gem json" et ont besoin de charger des données JSON à partir de certains url, par exemple:
"http://locallhost:3000/qwerty/give_json.json"
avec
{"one":"Omg","two":125,"three":"Hu"}
J'ai rails application
class QwertyController < ApplicationController
require 'json'
def get_json
source = "http://localhost:3000/qwerty/give_json.json"
@data = JSON.parse(JSON.load(source))
end
end
J'obtiens l'erreur
JSON::ParserError in QwertyController#get_json
795: unexpected token at 'http://localhost:3000/qwerty/give_json.json'
En chaîne: @data = JSON.parse(JSON.charge(source))
Quelle est la question? Comment puis-je obtenir des données JSON et l'analyser? J'essaie @data["un"] ...
On dirait que vous avez invalid JSON dans la source
Non, il n'est pas. J'ai créé une application rails, générer du JSON réponse sur le port 3000 (localhost:3000/qwerty/give_json.json). Et la seconde application, essayez d'obtenir des données JSON sur le port 3001 (localhost:3001/qwerty/get_json)
Quelle est la version de ruby utilisez-vous? vous n'avez pas besoin d'exiger de json dans les nouvelles versions de rails et ruby...
alexkd@Active-pc:~$ ruby-v ruby 1.9.3p448 (2013-06-27 révision 41675) [i686-linux] alexkd@Active-pc:~$ rails-v Rails 4.0.0
Oui vous avez invalid JSON. Vous appelez JSON.charge sur une chaîne d'URL, pas un objet JSON. C'est invalid JSON. JSON.la charge ne marche pas lire les données à partir d'une url, vous êtes juste de passage de la chaîne en
Non, il n'est pas. J'ai créé une application rails, générer du JSON réponse sur le port 3000 (localhost:3000/qwerty/give_json.json). Et la seconde application, essayez d'obtenir des données JSON sur le port 3001 (localhost:3001/qwerty/get_json)
Quelle est la version de ruby utilisez-vous? vous n'avez pas besoin d'exiger de json dans les nouvelles versions de rails et ruby...
alexkd@Active-pc:~$ ruby-v ruby 1.9.3p448 (2013-06-27 révision 41675) [i686-linux] alexkd@Active-pc:~$ rails-v Rails 4.0.0
Oui vous avez invalid JSON. Vous appelez JSON.charge sur une chaîne d'URL, pas un objet JSON. C'est invalid JSON. JSON.la charge ne marche pas lire les données à partir d'une url, vous êtes juste de passage de la chaîne en
OriginalL'auteur Alex Kurmaev | 2013-09-02
Vous devez vous connecter pour publier un commentaire.
JSON.load
prend une source qui est uneString
ouIO
objet, selon la documentationhttp://www.ruby-doc.org/stdlib-1.9.3/libdoc/json/rdoc/JSON.html#method-i-load
Vous êtes en lui donnant une Chaîne qui est une URL et c'est pourquoi vous obtenez une erreur. Vous pouvez utiliser
open-uri
pour récupérer les données à partir de l'URL pour ensuite être analysé par JSON comme si...NOTE
open
renvoie uneStringIO
objet qui répond àread
de retourner les données JSON. JSON.charge transforme les données dans une table de hachage à utiliser.Pour analyser la chaîne JSON, vous pouvez soit utiliser
JSON.load
ouJSON.parse
OriginalL'auteur Leo Correa
Vous pouvez utiliser net/http bibliothèque comme ci-dessous:
Ou le gem http parti:
OriginalL'auteur Junior Joanis
Par défaut,
httparty
comprend déjà la librairie JSON à l'intérieur de httparty.rb.Cela signifie que l'appel à
require 'json'
est inutile.Merci pour la prestation de ces exemples!
OriginalL'auteur carlosplusplus
Vous pouvez utiliser JSON et net/http lib.. ce qui est ci-dessous:
OriginalL'auteur Rawan-25