0

JSON オブジェクトの配列を返す API を呼び出していますが、各要素に正しくアクセスできないようです。これは、API 呼び出しのサンプルの戻り値です。

[{"param1":1,"param2":"blah1"},
{"param1":2,"param2":"blah2"},
{"param1":3,"param2":"blah3"}]

API を呼び出して、最初の JSON 応答オブジェクトのパラメーターを出力しようとしているのは次のとおりです。

result = HTTParty.get('http://randomapi.com',query: options)
@a = result[0]['param1']
# puts "#{result}"
puts "#{@a}"

これを行うと何も印刷されません。結果に正しい情報が出力されるため、URL に正常にアクセスできていることがわかります。

この URL http://blog.teamtreehouse.com/its-time-to-httpartyから JSON 応答にアクセスする方法に関する情報を入手しました。

編集: 以下のコメントを読んだ後、API 呼び出しが text/html のコンテンツ タイプを返し、text/html の解析が機能していないことに気付きました。文字列自体に入らずにこれを削除する方法はありますか?

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html 
    xmlns="http://www.w3.org/1999/xhtml">
    <head>
        <title></title>
    </head>
    <body>
        <form method="post" action="GetRankingList.aspx?pvptype=1&amp;sid=1&amp;tm=20130821160000&amp;auth=77c9b582c3aed3d3974400cfb118fe4b" id="form1">
            <div class="aspNetHidden">
                <input type="hidden" name="__VIEWSTATE" id="__VIEWSTATE" value="/wEPDwULLTE2MTY2ODcyMjlkZLSAAAtd4/lj1u6b0GjPWM+p3i9tqI6sq+xDrRw2cAv3" />
            </div>
            <div></div>
        </form>
    </body>
</html>
4

3 に答える 3

0

format で json にアクセスする場合

require 'json'
result = JSON.parse('[{"param1":1,"param2":"blah1"},{"param1":2,"param2":"blah2"}, {"param1":3,"param2":"blah3"}]')
@a = result[0]["param1"]
puts @a
于 2013-08-23T04:10:35.983 に答える
0

結果からparsed_responseを解析する必要があります。

@parsed = JSON.parse(result.parsed_response)
于 2013-08-23T04:11:05.057 に答える