2013-09-11 2 views
0

Я создаю задачу rake, которая анализирует массив объектов JSON и должна запускать каждый элемент массива json. Вот пример объекта JSON Я пытаюсь перебиратьRails как обрабатывать разобранный json

response.body

{"result":"[{\"accounts\":\"1668\",\"accu\":\"568\",\"activePayingRate\":\"1.97757\"}, 
{\"accounts\":\"1554\",\"accu\":\"497\",\"activePayingRate\":\"2.18398\"}, 
{\"accounts\":\"2314\",\"accu\":\"491\",\"activePayingRate\":\"2.43795\"}, 
{\"accounts\":\"2825\",\"accu\":\"511\",\"activePayingRate\":\"2.33333\"}]","errorMsg":"success"} 

Я попробовал этот

result = JSON.parse(response.body)["result"] 
    result.each do |r| 
     puts r["accu"] 
    end 

Но потом я получил эту ошибку

undefined method `each' for #<String:0x007fc81dc6fb78> 

Итак, я пробовал это

result = JSON.parse(response.body) 
    result.each do |r| 
     puts r["accu"] 
    end 

Но потом я получил эту ошибку

can't convert String into Integer 

ответ

1

я понял, решение, но я не люблю его вообще. Это смехотворное решение, но оно работает. Я анализирую ответ дважды в этом решении.

result = JSON.parse(response.body)["result"] 
    result = JSON.parse(result) 
    result.each do |r| 
     puts r["accu"] 
    end 
+3

Это потому, что вы работаете с плохо отформатированным JSON. – deefour

+0

Да, я понял это. разработчики этого API продолжают закручивать JSON. Но я все еще надеялся на лучшее исправление, чем тот, который я предоставил – user2158382

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