JSON напрямую поддерживается в Ruby и используется по крайней мере с Ruby v1.9.3, поэтому нет необходимости устанавливать гем, если вы не используете что-то более старое. Просто используйте require 'json'в своем коде.
Жестянщик
Ответы:
560
Это выглядит как JavaScript Object Notation (JSON) . Вы можете проанализировать JSON, который находится в некоторой переменной, например json_string, так:
require 'json'
JSON.parse(json_string)
Если вы используете более старый Ruby, вам может потребоваться установить гем json .
Существуют также другие реализации JSON для Ruby, которые могут лучше соответствовать некоторым сценариям использования:
Также вы можете установить для опции symbolize_names значение true, чтобы получить ключи в качестве символов. Пример:JSON.parse(string, symbolize_names: true) #=> {key: :value}
Нандо Соуза
31
JSON напрямую поддерживается в Ruby и используется по крайней мере с Ruby v1.9.3, поэтому нет необходимости устанавливать гем, если вы не используете что-то более старое. Просто используйте require 'json'в своем коде.
Жестянщик
212
Просто немного расширим ответы, что делать с анализируемым объектом:
# 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, потому что JSON требует двойных кавычек вокруг строк. См. Строку в определении JSON ( json.org ): «Строка - это последовательность из нуля или более символов Юникода, заключенная в двойные кавычки с использованием обратной косой черты».
endorama
1
Во многих случаях вы хотите обернуть JSON.parseв спасательный блок для JSON::ParserError.
johnml
JSON.parse("[#{value}]")[0]чтобы избежать ошибкиA JSON text must at least contain two octets!
Rivenfall
39
Начиная с Ruby v1.9.3 вам не нужно устанавливать какие-либо Gems для анализа JSON, просто используйте require 'json':
Хотя эта ссылка может ответить на вопрос, лучше включить сюда основные части ответа и предоставить ссылку для справки. Ответы, содержащие только ссылки, могут стать недействительными в случае изменения связанной страницы. - Из Обзора
require 'json'
в своем коде.Ответы:
Это выглядит как JavaScript Object Notation (JSON) . Вы можете проанализировать JSON, который находится в некоторой переменной, например
json_string
, так:Если вы используете более старый Ruby, вам может потребоваться установить гем json .
Существуют также другие реализации JSON для Ruby, которые могут лучше соответствовать некоторым сценариям использования:
источник
JSON.parse(string, symbolize_names: true) #=> {key: :value}
require 'json'
в своем коде.Просто немного расширим ответы, что делать с анализируемым объектом:
источник
'{ "a": "bob" }'
действует."{ 'a': 'bob' }"
не является.JSON.parse
в спасательный блок дляJSON::ParserError
.JSON.parse("[#{value}]")[0]
чтобы избежать ошибкиA JSON text must at least contain two octets!
Начиная с Ruby v1.9.3 вам не нужно устанавливать какие-либо Gems для анализа JSON, просто используйте
require 'json'
:Смотрите JSON на Ruby-Doc.
источник
Это похоже на строку JSON. Вы можете использовать одну из многих библиотек JSON, и это так же просто, как сделать:
источник
Это немного поздно, но я столкнулся с чем-то интересным, что, кажется, важно внести свой вклад.
Я случайно написал этот код, и он, кажется, работает:
Я был удивлен, увидев, что это работает, так как я использую библиотеку YAML, но это работает.
Причина, почему это важно, заключается в том, что
yaml
встроен в Ruby, поэтому установка gem отсутствует.Я использую версии 1.8.x и 1.9.x - поэтому
json
библиотека не встроена, но в версии 2.x.Технически - это самый простой способ извлечь данные в версии ниже 2.0.
источник
Эти данные выглядят как в формате JSON.
Вы можете использовать эту реализацию JSON для Ruby, чтобы извлечь ее.
источник
Я предлагаю Oj, так как он работает быстрее, чем стандартная библиотека JSON.
https://github.com/ohler55/oj
( см. сравнение производительности здесь )
источник
Я создал один гем FastJsonparser, который быстрее, чем JSON.parse и Oj gem, попробуйте
Github: https://github.com/anilmaurya/fast_jsonparser
источник