JSON文件:http://media1.clubpenguin.com/play/en/web_service/game_configs/paper_items.json 我使用的是Python 2。
我正在尝试提取所有' paper_item_id'来自JSON文件(如上所述),使用循环并存储' paper_item_id'在' item_id'变量,所以每次循环迭代到' paper_item_id'时这个变量都会改变,但是我想要一个if语句检查' paper_item_id'在JSON文件中' is_bait'是真的'如果是真的那么< item_id'变量不会存储' paper_item_id'其中有一个' is_bait'是真的,继续下一个。
步骤1)获取JSON数据
第2步)过滤掉' paper_item_id' ' is_bait'' is_bait'为真。
步骤3)运行一个循环,分配一个' item_id'变量为' paper_item_id'收到。
步骤4)循环应该运行,以便所有过滤的' paper_item_id' (item_id)已传递给' myFunction'
样本英语代码:
foreach ('don't know what to have for the loop cond') {
item_id = 'paper_item_id'
if (item_id[is_bait]) == true {
code which will go to the end of the loop
}
else
{
myFunction(item_id)
}
我知道这有一种Javascript类型的语法,但我想在python中使用它。
我现在拥有的:
import json
import urllib2
url = 'http://media1.clubpenguin.com/play/en/web_service/game_configs/paper_items.json'
result = json.loads(url)
request = urllib2.Request(url)
response = urllib2.urlopen(request)
json_obj = json.load(response)
我该怎么知道?
答案 0 :(得分:2)
我已经使用了requests.get,并且还检查了有效的HTTP响应。
这是我的示例代码:
import json
import requests
def myFunction(item):
# do something here
print item['paper_item_id']
pass
json_obj = requests.get('http://media1.clubpenguin.com/play/en/web_service/game_configs/paper_items.json').json()
for item in json_obj:
if 'is_bait' in item and item['is_bait'] == "1":
# item['is_bait'] == "1", in case you ever get is_bait = "0" in your json response.
print item['paper_item_id']
continue
else:
myFunction(item)
答案 1 :(得分:1)
以下是您作为伪代码提供的内容的翻译:
import json
import urllib2
url = 'http://media1.clubpenguin.com/play/en/web_service/game_configs/paper_items.json'
result = json.loads(url)
request = urllib2.Request(url)
response = urllib2.urlopen(request)
json_obj = json.load(response)
for item in json_obj:
if "is_bait" in item and item['is_bait']:
continue
else:
# do stuff
如果您反转条件,则可以跳过继续。
答案 2 :(得分:0)
json.load会根据需要将您的数据读入字典列表。在那之后,你可以使用标准的python对象操作来过滤你想要的任何东西:
import json
import urllib2
url = 'http://media1.clubpenguin.com/play/en/web_service/game_configs/paper_items.json'
result = json.load(url)
request = urllib2.Request(url)
response = urllib2.urlopen(request)
json_obj = json.load(response)
您的问题是您正在将URL对象作为字符串读取,并且这是一个非首发。我修改了上面的代码,它现在读取了整个内容(下面输出的代码段:
{u'cost': 0,
u'is_bait': u'1',
u'is_member': Terue,
u'label': u"Stompin' Bob Fowhawk Hair",
u'layer': 6000,
u'paper_item_id': 1274,
u'prompt': u"Stompin' Bob Fowhawk Hair",
u'type': 2},
{u'cost': 0,
u'is_bait': u'1',
u'is_member': True,
u'label': u'G Billy Hair and Bandana',
u'layer': 6000,
u'paper_item_id': 1275,
u'prompt': u'G Billy Hair and Bandana',
u'type': 2},
... continues for a long time...