2016-03-31 69 views
0

我正在使用考拉寶石查詢Facebook。 以下查詢產生一個字符串?的哈希。例如:Facebook查詢結果是哈希字符串

@graph.get_object("search?q=holden&type=page&limit=5") 

當我說哈希串,結果看起來是這樣的:

{"name"=>"Holden", "category"=>"Cars", "id"=>"5730024897"} 
{"name"=>"Holden, Massachusetts", "category"=>"City", "category_list"=>[{"id"=>"224455390913969", "name"=>"City"}], "id"=>"104015212968818"} 
{"name"=>"Holden, Maine", "category"=>"City", "category_list"=>[{"id"=>"224455390913969", "name"=>"City"}], "id"=>"112517345426169"} 
{"name"=>"Holden, Missouri", "category"=>"City", "category_list"=>[{"id"=>"224455390913969", "name"=>"City"}], "id"=>"107921245894576"} 
{"name"=>"Holden, Louisiana", "category"=>"City", "category_list"=>[{"id"=>"224455390913969", "name"=>"City"}], "id"=>"111960155481686"} 

有哈希值之間沒有逗號,當然,一些值本身散列。

試圖做JSON.parse,因爲它給出了一個JSON錯誤,因爲它沒有很好地形成JSON。 所以我認爲我可以通過跟蹤開始和結束括號來解析這個問題,但是在我重新開始之前,可能還有一個很笨拙的問題,我想知道是否有一些很酷的ruby方法來做到這一點。我可以以某種方式c​​homp哈希?要麼...?

期待眼花繚亂!

+0

你能發佈確切的「字符串散列」它返回嗎? –

+0

@Juan Manuel Rodulfo Salcedo - 我編輯了這個問題以顯示一些真實的FB輸出。然而,我並不是真正以強力的方式閱讀這篇文章,因爲這並不難。如果有一個聰明的Ruby單線遊戲,我真的只是在遊蕩? – grooble

+1

API確實會返回有效的JSON(您可以直接在瀏覽器中調用「https://graph.facebook.com/search?q=holden&type=page&limit=5&access_token= {add_a_valid_token_here}」來輕鬆確認)。你使用的方法是'get_object' - 所以我會假設它已經返回一個對象;意思是某種類型的ruby數據結構。你可能只是被你用來做調試輸出的任何方法所欺騙了(?) – CBroe

回答

1

我不知道在一個奇特的方式做了許多變革的一個更好的辦法..

如果字符串是像我從代碼複製它:

[68] pry(main)> string 
=> "{\"name\"=>\"Holden\", \"category\"=>\"Cars\", \"id\"=>\"5730024897\"}\n{\"name\"=>\"Holden, Massachusetts\", \"category\"=>\"City\", \"category_list\"=>[{\"id\"=>\"224455390913969\", \"name\"=>\"City\"}], \"id\"=>\"104015212968818\"}\n{\"name\"=>\"Holden, Maine\", \"category\"=>\"City\", \"category_list\"=>[{\"id\"=>\"224455390913969\", \"name\"=>\"City\"}], \"id\"=>\"112517345426169\"}\n{\"name\"=>\"Holden, Missouri\", \"category\"=>\"City\", \"category_list\"=>[{\"id\"=>\"224455390913969\", \"name\"=>\"City\"}], \"id\"=>\"107921245894576\"}\n{\"name\"=>\"Holden, Louisiana\", \"category\"=>\"City\", \"category_list\"=>[{\"id\"=>\"224455390913969\", \"name\"=>\"City\"}], \"id\"=>\"111960155481686\"}" 

[69] pry(main)> string.split("\n").map { |a| JSON.parse(a.gsub("=>",":")) } 
=> [{"name"=>"Holden", "category"=>"Cars", "id"=>"5730024897"}, 
{"name"=>"Holden, Massachusetts", 
    "category"=>"City", 
    "category_list"=>[{"id"=>"224455390913969", "name"=>"City"}], 
    "id"=>"104015212968818"}, 
{"name"=>"Holden, Maine", 
    "category"=>"City", 
    "category_list"=>[{"id"=>"224455390913969", "name"=>"City"}], 
    "id"=>"112517345426169"}, 
{"name"=>"Holden, Missouri", 
    "category"=>"City", 
    "category_list"=>[{"id"=>"224455390913969", "name"=>"City"}], 
    "id"=>"107921245894576"}, 
{"name"=>"Holden, Louisiana", 
    "category"=>"City", 
    "category_list"=>[{"id"=>"224455390913969", "name"=>"City"}], 
    "id"=>"111960155481686"}] 

如果它是所有在同一個字符串行(不含「\ n」)

string.gsub('}{','},,{').split(",,").map { |a| JSON.parse(a.gsub("=>",":")) } 
+0

這是應該看的地方!https://github.com/arsduo/koala/wiki/Graph-API 看起來響應已經是一個哈希數組,我可以使用。 不是JSON。謝謝胡安, – grooble