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:
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:
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é:
# 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
'{ "a": "bob" }'
est valide. "{ 'a': 'bob' }"
n'est pas.
JSON.parse
dans un bloc de sauvetage JSON::ParserError
.
JSON.parse("[#{value}]")[0]
pour éviter l'erreurA JSON text must at least contain two octets!
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:
require 'yaml'
CONFIG_FILE = ENV['CONFIG_FILE'] # path to a JSON config file
configs = YAML.load_file("#{CONFIG_FILE}")
puts configs['desc']['someKey']
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.
Ces données semblent être au format JSON.
Vous pouvez utiliser cette implémentation JSON pour Ruby pour l'extraire.
Je suggère Oj car il est waaaaaay plus rapide que la bibliothèque JSON standard.
J'ai créé un joyau FastJsonparser, qui est plus rapide que JSON.parse et Oj gem, essayez-le
require 'json'
dans votre code.