Проблема:Разбор объекта JSON в RUBY с помощью шаблона?
Я относительно новым для программирования и обучения Руби, я работал с JSON и раньше, но были озадачены этой проблемой.
Я беру хеш, бег hash.to_json, и возвращает объект JSON, который выглядит следующим образом: «количество» =
{
"line_1": {
"row": "1",
"productNumber": "111",
"availableQuantity": "4"
},
"line_2": {
"row": "2",
"productNumber": "112",
"availableQuantity": "6"
},
"line_3": {
"row": "3",
"productNumber": "113",
"availableQuantity": "10"
}
Я хочу, чтобы найти значение «availableQuantity», что это больше, чем 5 и верните номер строки. Кроме того, я хотел бы вернуть номер строки и номер продукта.
То, что я пытался
Я искал на использовании маски в запросе JSON, чтобы получить над значением «line_» для каждой записи, но не повезло.
просто определить значение 'availableQuantity' внутри объекта JSON больше, чем 5:
д = JSON.parse (количество)
q.find {| ключ | ключ [ "availableQuantity"]> 5}
Однако это возвращает ошибку: "{TypeError} нет неявного преобразования из строки в Integer."
Я искал эту ошибку, но я не могу понять, что это значит в контексте этой проблемы.
или даже
q.find {|key, value| value > 2}
, который возвращает ошибку: "неопределенный метод`>»для { "строки"=> "1", "productNumber"=> 111, "availableQuantity"=> 4} : Hash «
Эта попытка выглядит настолько упрощенной, что мне стыдно, но она показывает фундаментальный пробел в моем понимании того, как работать с циклом над материалом, используя перечислимый.
Может ли кто-нибудь помочь объяснить решение, и в идеале, что означают шаги в решении? Например, требуется ли в решении перечислить с помощью find? Или Ruby обрабатывает прямой запрос к json?
Это поможет мне значительно научиться.
'to_i' - конечно же! Я сравниваю целое число со строкой. И регулярное выражение, используемое для выделения любых последовательных цифр, отлично. Это очень помогло - спасибо Амадану. –