JSON est directement pris en charge dans Ruby, et depuis au moins Ruby v1.9.3, il n'est donc pas nécessaire d'installer une gemme à moins que vous n'utilisiez quelque chose de plus ancien. Utilisez simplement require 'json'dans votre code.
The Tin Man
Réponses:
560
Cela ressemble à la notation d'objet JavaScript (JSON) . Vous pouvez analyser JSON qui réside dans une variable, par exemple json_string, comme ceci:
require 'json'
JSON.parse(json_string)
Si vous utilisez un Ruby plus ancien, vous devrez peut-être installer la gemme json .
Il existe également d'autres implémentations de JSON pour Ruby qui peuvent mieux s'adapter à certains cas d'utilisation:
Vous pouvez également définir l'option symbolize_names sur true, afin d'obtenir des clés sous forme de symboles. Exemple:JSON.parse(string, symbolize_names: true) #=> {key: :value}
Nando Sousa
31
JSON est directement pris en charge dans Ruby, et depuis au moins Ruby v1.9.3, il n'est donc pas nécessaire d'installer une gemme à moins que vous n'utilisiez quelque chose de plus ancien. Utilisez simplement require 'json'dans votre code.
The Tin Man
212
Juste pour étendre un peu les réponses avec ce qu'il faut faire avec l'objet analysé:
# JSON Parsing example
require "rubygems"# don't need this if you're Ruby v1.9.3 or higher
require "json"
string ='{"desc":{"someKey":"someValue","anotherKey":"value"},"main_item":{"stats":{"a":8,"b":12,"c":10}}}'
parsed = JSON.parse(string)# returns a hash
p parsed["desc"]["someKey"]
p parsed["main_item"]["stats"]["a"]# Read JSON from a file, iterate over objects
file = open("shops.json")
json = file.read
parsed = JSON.parse(json)
parsed["shop"].each do|shop|
p shop["id"]end
@LinusAn car JSON nécessite des guillemets doubles autour des chaînes. Voir chaîne dans la définition JSON ( json.org ): "Une chaîne est une séquence de zéro ou plusieurs caractères Unicode, entourée de guillemets doubles, utilisant des échappements antislash."
endorama
1
Dans de nombreux cas, vous souhaitez vous envelopper JSON.parsedans un bloc de sauvetage JSON::ParserError.
johnml
JSON.parse("[#{value}]")[0]pour éviter l'erreurA JSON text must at least contain two octets!
Rivenfall
39
Depuis Ruby v1.9.3, vous n'avez pas besoin d'installer de gemmes pour analyser JSON, utilisez simplement require 'json':
require 'json'
dans votre code.Réponses:
Cela ressemble à la notation d'objet JavaScript (JSON) . Vous pouvez analyser JSON qui réside dans une variable, par exemple
json_string
, comme ceci:Si vous utilisez un Ruby plus ancien, vous devrez peut-être installer la gemme json .
Il existe également d'autres implémentations de JSON pour Ruby qui peuvent mieux s'adapter à certains cas d'utilisation:
la source
JSON.parse(string, symbolize_names: true) #=> {key: :value}
require 'json'
dans votre code.Juste pour étendre un peu les réponses avec ce qu'il faut faire avec l'objet analysé:
la source
'{ "a": "bob" }'
est valide."{ 'a': 'bob' }"
n'est pas.JSON.parse
dans un bloc de sauvetageJSON::ParserError
.JSON.parse("[#{value}]")[0]
pour éviter l'erreurA JSON text must at least contain two octets!
Depuis Ruby v1.9.3, vous n'avez pas besoin d'installer de gemmes pour analyser JSON, utilisez simplement
require 'json'
:Voir JSON sur Ruby-Doc.
la source
Il ressemble à une chaîne JSON. Vous pouvez utiliser l'une des nombreuses bibliothèques JSON et c'est aussi simple que cela:
la source
C'est un peu tard mais je suis tombé sur quelque chose d'intéressant qui semble important de contribuer.
J'ai accidentellement écrit ce code, et il semble fonctionner:
J'ai été surpris de voir que cela fonctionne depuis que j'utilise la bibliothèque YAML, mais cela fonctionne.
La raison pour laquelle il est important est qu'il
yaml
soit intégré à Ruby, il n'y a donc pas d'installation de gemmes.J'utilise les versions 1.8.x et 1.9.x - donc la
json
bibliothèque n'est pas intégrée, mais elle est dans la version 2.x.Donc, techniquement - c'est le moyen le plus simple d'extraire les données dans une version inférieure à 2.0.
la source
Ces données semblent être au format JSON.
Vous pouvez utiliser cette implémentation JSON pour Ruby pour l'extraire.
la source
Je suggère Oj car il est waaaaaay plus rapide que la bibliothèque JSON standard.
https://github.com/ohler55/oj
( voir les comparaisons de performances ici )
la source
J'ai créé un joyau FastJsonparser, qui est plus rapide que JSON.parse et Oj gem, essayez-le
Github: https://github.com/anilmaurya/fast_jsonparser
la source