2015-08-16 3 views
0

Я пытаюсь извлечь данные из этого JSON, однако, когда я набираю [0], он возвращает '{' &, если я наберу ["tweets0"], я ничего не получаю. Я пропустил что-то действительно очевидное?Как извлечь из этого JSON?

Я использую Ruby & драгоценный камень MultiJson, если это что-то меняет.

{ 
    "tweets0": [ 
     { 
      "content": "Test1", 
      "time": "2015/08/16 7:43 PM" 
     } 
    ], 
    "tweets1": [ 
     { 
      "content": "Test2", 
      "time": "2015/08/16 7:44 PM" 
     } 
    ], 
    "tweets2": [ 
     { 
      "content": "Test3", 
      "time": "2015/08/16 7:44 PM" 
     } 
    ], 
    "tweets3": [ 
     { 
      "content": "Test3", 
      "time": "2015/08/16 7:46 PM" 
     } 
    ], 
    "tweets4": [ 
     { 
      "content": "Test", 
      "time": "2015/08/16 7:45 PM" 
     } 
    ], 
    "tweets5": [ 
     { 
      "content": "3", 
      "time": "2015/08/16 7:48 PM" 
     } 
    ], 
    "tweets6": [ 
     { 
      "content": "3", 
      "time": "2015/08/16 7:48 PM" 
     } 
    ], 
    "tweets7": [ 
     { 
      "content": "3213", 
      "time": "2015/08/16 7:49 PM" 
     } 
    ], 
    "tweets8": [ 
     { 
      "content": "3213", 
      "time": "2015/08/16 7:49 PM" 
     } 
    ], 
    "tweets9": [ 
     { 
      "content": "23", 
      "time": "2015/08/16 7:50 PM" 
     } 
    ], 
    "tweets10": [ 
     { 
      "content": "23", 
      "time": "2015/08/16 7:49 PM" 
     } 
    ], 
    "tweets11": [ 
     { 
      "content": "3", 
      "time": "2015/08/16 7:53 PM" 
     } 
    ], 
    "tweets12": [ 
     { 
      "content": "34", 
      "time": "2015/08/16 7:53 PM" 
     } 
    ], 
    "tweets13": [ 
     { 
      "content": "25", 
      "time": "2015/08/16 7:53 PM" 
     } 
    ], 
    "tweets14": [ 
     { 
      "content": "right", 
      "time": "2015/08/16 7:52 PM" 
     } 
    ] 
} 
+0

Не могли бы вы опубликовать фрагмент кода, который вы используете для l oad и получить доступ к данным? – Matt

ответ

2

Если [0] возвращает «{», чем подсказывает мне, что Руби не обрабатывает ваш JSON как объект JSON, но в виде строки.

Возможно, вам понадобится .load() ваш JSON?

0

Почему бы не просто использовать стандартную библиотеку json, встроенную в Ruby?

require 'json' 
a = JSON.parse(your_json_data) 
a["tweets0"] #=> [{"content"=>"Test1", "time"=>"2015/08/16 7:43 PM"}] 
+0

Потому что библиотека 'json' stdlib реализована с использованием чистого рубина, поэтому она медленная. 'multi_json' пытается использовать' oj', и возвращается к 'yajl', затем' json'. – Aetherus

0

После того, как вы загрузили данные с MultiJson

> require 'multi_json' 
> json = MultiJson.load('{"tweets0": [{"content": "Test1","time": "2015/08/16 7:43 PM"}]}') 
=> {"tweets0"=>[{"content"=>"Test1", "time"=>"2015/08/16 7:43 PM"}]} 

Тогда вы можете получить доступ к Hash элемент по имени:

> json['tweets0'] 
=>[{"content"=>"Test1", "time"=>"2015/08/16 7:43 PM"}] 

Чтобы получить доступ к элементам массива:

> json['tweets0'].first 
=> {"content"=>"Test1", "time"=>"2015/08/16 7:43 PM"} 
Смежные вопросы