O JSON é suportado diretamente no Ruby e existe desde pelo menos o Ruby v1.9.3, portanto, não há necessidade de instalar uma gema, a menos que você esteja usando algo mais antigo. Basta usar require 'json'no seu código.
the Tin Man
Respostas:
560
Isso se parece com JavaScript Object Notation (JSON) . Você pode analisar o JSON que reside em alguma variável, por exemplo json_string:
require 'json'
JSON.parse(json_string)
Se você estiver usando um Ruby antigo, pode ser necessário instalar o json gem .
Também há outras implementações do JSON para Ruby que podem se encaixar melhor em alguns casos de uso:
Também é possível definir a opção symbolize_names como true, a fim de obter as chaves como símbolos. Exemplo:JSON.parse(string, symbolize_names: true) #=> {key: :value}
Nando Sousa
31
O JSON é suportado diretamente no Ruby e existe desde pelo menos o Ruby v1.9.3, portanto, não há necessidade de instalar uma gema, a menos que você esteja usando algo mais antigo. Basta usar require 'json'no seu código.
the Tin Man
212
Apenas para estender um pouco as respostas sobre o que fazer com o objeto analisado:
# 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
Nota importante: '{ "a": "bob" }'é válido. "{ 'a': 'bob' }"não é.
Ziggy
7
@LinusAn porque JSON requer aspas duplas em torno de strings. Consulte a string na definição JSON ( json.org ): "Uma string é uma sequência de zero ou mais caracteres Unicode, envoltos em aspas duplas, usando escapes de barra invertida".
Endorama
11
Em muitos casos, você deseja agrupar JSON.parsedentro de um bloco de resgate JSON::ParserError.
9788 John Deere
JSON.parse("[#{value}]")[0]para evitar o erroA JSON text must at least contain two octets!
Rivenfall 16/03
39
No Ruby v1.9.3, você não precisa instalar nenhum Gems para analisar o JSON, basta usar require 'json':
require 'json'
no seu código.Respostas:
Isso se parece com JavaScript Object Notation (JSON) . Você pode analisar o JSON que reside em alguma variável, por exemplo
json_string
:Se você estiver usando um Ruby antigo, pode ser necessário instalar o json gem .
Também há outras implementações do JSON para Ruby que podem se encaixar melhor em alguns casos de uso:
fonte
JSON.parse(string, symbolize_names: true) #=> {key: :value}
require 'json'
no seu código.Apenas para estender um pouco as respostas sobre o que fazer com o objeto analisado:
fonte
'{ "a": "bob" }'
é válido."{ 'a': 'bob' }"
não é.JSON.parse
dentro de um bloco de resgateJSON::ParserError
.JSON.parse("[#{value}]")[0]
para evitar o erroA JSON text must at least contain two octets!
No Ruby v1.9.3, você não precisa instalar nenhum Gems para analisar o JSON, basta usar
require 'json'
:Veja JSON em Ruby-Doc.
fonte
Parece uma string JSON. Você pode usar uma das muitas bibliotecas JSON e é tão simples quanto fazer:
fonte
É um pouco tarde, mas encontrei algo interessante que parece importante para contribuir.
Eu acidentalmente escrevi esse código e parece funcionar:
Fiquei surpreso ao ver que funciona, pois estou usando a biblioteca YAML, mas funciona.
A razão pela qual é importante é que ele
yaml
vem embutido no Ruby, portanto não há instalação de gemas.Estou usando as versões 1.8.xe 1.9.x - portanto, a
json
biblioteca não está incorporada, mas está na versão 2.x.Portanto, tecnicamente - esta é a maneira mais fácil de extrair os dados na versão menor que 2.0.
fonte
Esses dados parecem estar no formato JSON.
Você pode usar esta implementação JSON para Ruby para extraí-la.
fonte
Eu sugiro Oj, pois é muito mais rápido que a biblioteca JSON padrão.
https://github.com/ohler55/oj
( veja comparações de desempenho aqui )
fonte