解析然后读取 JSON / HTTParty::Response 的具体值
Parsing and then reading specific values of JSON / HTTParty::Response
我希望能够从此代码中检索层和分区,但是当使用来自 HTTParty 的响应对象并执行 res[0]["#{id}"]["tier"]
时,它会出现 "cannot implicitly convert string to integer",这意味着它需要一个整数,但我不知道在哪里
这是我得到的响应(我在循环中执行此操作,这就是我将 ID 放入 "#{id}"
的原因)
{"37714607": [
{
"queue": "RANKED_SOLO_5x5",
"name": "Diana's Patriots",
"entries": [{
"leaguePoints": 32,
"isFreshBlood": false,
"isHotStreak": false,
"division": "IV",
"isInactive": false,
"isVeteran": false,
"losses": 65,
"playerOrTeamName": "Wicked7000",
"playerOrTeamId": "37714607",
"wins": 59
}],
"tier": "GOLD"
},
{
"queue": "RANKED_TEAM_5x5",
"name": "Nasus's Justicars",
"entries": [{
"leaguePoints": 81,
"isFreshBlood": false,
"isHotStreak": false,
"division": "V",
"isInactive": false,
"isVeteran": false,
"losses": 73,
"playerOrTeamName": "Pink Fedoras",
"playerOrTeamId": "TEAM-5ffedf90-45ba-11e4-9e4b-c81f66db8bc5",
"wins": 73
}],
"tier": "SILVER"
},
{
"queue": "RANKED_TEAM_3x3",
"name": "Cassiopeia's Marksmen",
"entries": [{
"leaguePoints": 0,
"isFreshBlood": false,
"isHotStreak": true,
"division": "I",
"isInactive": false,
"isVeteran": false,
"losses": 3,
"playerOrTeamName": "The Booty Brothers",
"playerOrTeamId": "TEAM-53a65b60-ff2d-11e4-9e51-c81f66dba0e7",
"wins": 7
}],
"tier": "BRONZE"
}
]}
看来您需要改为 res[id.to_s][0]["tier"]
– 首先获取根键,然后获取第一个元素(反之亦然)。
作为您的json如下所示
{"37714607": [
{
"queue": "RANKED_SOLO_5x5",
"name": "Diana's Patriots",
"entries": [{
"leaguePoints": 32,
"isFreshBlood": false,
"isHotStreak": false,
"division": "IV",
"isInactive": false,
"isVeteran": false,
"losses": 65,
"playerOrTeamName": "Wicked7000",
"playerOrTeamId": "37714607",
"wins": 59
}],
"tier": "GOLD"
},
所以它将首先 id
= "37714607" 然后是一个数组开始([
)该数组包含哈希所以第一个哈希有 "tier"
key
应该是
tiers = []
res["#{id}"].each do |result| #id = 37714607
tiers << result["tier"]
end
我希望能够从此代码中检索层和分区,但是当使用来自 HTTParty 的响应对象并执行 res[0]["#{id}"]["tier"]
时,它会出现 "cannot implicitly convert string to integer",这意味着它需要一个整数,但我不知道在哪里
这是我得到的响应(我在循环中执行此操作,这就是我将 ID 放入 "#{id}"
的原因)
{"37714607": [
{
"queue": "RANKED_SOLO_5x5",
"name": "Diana's Patriots",
"entries": [{
"leaguePoints": 32,
"isFreshBlood": false,
"isHotStreak": false,
"division": "IV",
"isInactive": false,
"isVeteran": false,
"losses": 65,
"playerOrTeamName": "Wicked7000",
"playerOrTeamId": "37714607",
"wins": 59
}],
"tier": "GOLD"
},
{
"queue": "RANKED_TEAM_5x5",
"name": "Nasus's Justicars",
"entries": [{
"leaguePoints": 81,
"isFreshBlood": false,
"isHotStreak": false,
"division": "V",
"isInactive": false,
"isVeteran": false,
"losses": 73,
"playerOrTeamName": "Pink Fedoras",
"playerOrTeamId": "TEAM-5ffedf90-45ba-11e4-9e4b-c81f66db8bc5",
"wins": 73
}],
"tier": "SILVER"
},
{
"queue": "RANKED_TEAM_3x3",
"name": "Cassiopeia's Marksmen",
"entries": [{
"leaguePoints": 0,
"isFreshBlood": false,
"isHotStreak": true,
"division": "I",
"isInactive": false,
"isVeteran": false,
"losses": 3,
"playerOrTeamName": "The Booty Brothers",
"playerOrTeamId": "TEAM-53a65b60-ff2d-11e4-9e51-c81f66dba0e7",
"wins": 7
}],
"tier": "BRONZE"
}
]}
看来您需要改为 res[id.to_s][0]["tier"]
– 首先获取根键,然后获取第一个元素(反之亦然)。
作为您的json如下所示
{"37714607": [
{
"queue": "RANKED_SOLO_5x5",
"name": "Diana's Patriots",
"entries": [{
"leaguePoints": 32,
"isFreshBlood": false,
"isHotStreak": false,
"division": "IV",
"isInactive": false,
"isVeteran": false,
"losses": 65,
"playerOrTeamName": "Wicked7000",
"playerOrTeamId": "37714607",
"wins": 59
}],
"tier": "GOLD"
},
所以它将首先 id
= "37714607" 然后是一个数组开始([
)该数组包含哈希所以第一个哈希有 "tier"
key
应该是
tiers = []
res["#{id}"].each do |result| #id = 37714607
tiers << result["tier"]
end