2014-10-14 3 views
0

У меня есть этот тип хэша, хранящегося в переменной fooрубин получить часть хэша Redis

{:name=>"bobby", :data=>[[1, 2], [3, 4], [5, 6], [7, 8]]} 

, когда я пытаюсь foo[:data] я получаю no implicit conversion of Symbol into Integer

Как получить 2d массив?

EDIT

Это весь код:

redis = Redis.new 
    redis.set "foo", {name: "bobby", :data => [ 
    [1,2],[3,4],[5,6],[7,8] 
    ]} 
    foo = redis.get "foo" 
    puts foo[:data][0] 
+3

не может воспроизвести: '{: Имя => "бобби",: данные => [[1, 2], [3, 4], [5, 6], [7, 8]] } [: data] # => [[1, 2], [3, 4], [5, 6], [7, 8]] ' – mdesantis

+0

Я знаю, что это действительно странно ... Я не знаю, почему Я не могу получить доступ к этому, это результат команды redis.get. Это имеет значение? – Killerpixler

ответ

1

redis.get возвращает строку, а не хэш. Эта строка представляет собой JSON-представление хэша. Попытка:

require 'json' 
foo = JSON.parse(redis.get "foo") 
puts foo['data'] 
+0

Когда я это делаю, я получаю 'gems/json-1.8.1/lib/json/common.rb: 155: in 'parse': 757: неожиданный токен' на линии разбора – Killerpixler

+0

Пожалуйста, выполните:' p redis.get ('foo') 'и вставьте результат. – BroiSatse

+0

'' {: name => \ "bobby \",: data => [[1, 2], [3, 4], [5, 6], [7, 8]]} "' – Killerpixler

Смежные вопросы