0

現在、Web サイトの API JSON 出力から情報を抽出しようとしています。これが私が持っているもので、ほぼ完全に機能します。

def get_player_stats
  uri = URI("http://elophant.com/api/v1/euw/getPlayerStats?accountId=#{CGI.escape(@summoner.acctId)}&season=CURRENT&key=KEYID")
  resp = Net::HTTP.get_response(uri)
  hash = JSON(resp.body)

  solo_ranked_elo = hash['playerStatSummaries']['playerStatSummarySet'][2]['maxRating']
  puts solo_ranked_elo

end

問題は ['playerStatSummarySet'][1]、プレイヤーによって値が変わることです。したがって、あるプレイヤーのmaxRating場合は in set[1]になりますが、別のプレイヤーのmaxRating場合は in set になり[6]ます。

RankedSolo5x5値が存在するセットを検索する必要がありmaxRatingます。これについてどうすればいいですか?

比較のために使用している 2 つのサンプル ファイルを次に示します。

http://elophant.com/api/v1/euw/getPlayerStats?accountId=22031699&season=CURRENT&key=KEYID

http://elophant.com/api/v1/euw/getPlayerStats?accountId=23529170&season=CURRENT&key=KEYID

それが十分に明確であることを願っています!

4

1 に答える 1

1

これが完全な例です

#!/usr/bin/env ruby

require 'net/http'
require 'uri'
require 'json'

uri = URI("http://elophant.com/api/v1/euw/getPlayerStats?accountId=#{ARGV[0]}&season=CURRENT&key=KEYID")
resp = Net::HTTP.get_response(uri)
stat_summary = JSON(resp.body)['playerStatSummaries']['playerStatSummarySet']

stat_summary.each_with_index do |obj, i| # it's this loop that answers your question
  next if obj['playerStatSummaryType'] != 'RankedSolo5x5'

  puts obj['maxRating']
  break
end

ARGV[0]のコマンドライン引数値ですaccountID。上記をいくつかのmax_ratingファイルに保存してからchmod +x max_rating

./max_rating 22031699       # Outputs 1421
./max_rating 23529170       # Outputs 1237
于 2012-11-10T02:47:13.300 に答える