Python 从请求中打印 json 数据
Python print json data from requests
我一直在摸不着头脑,为什么它不打印我需要的 json 内容。有人知道我做错了什么吗?
这是词典
> "listinginfo": {
> "438309609514180554": {
> "listingid": "438309609514180554",
> "price": 35,
> "fee": 4,
> "publisher_fee_app": 730,
> "publisher_fee_percent": "0.10000000149011612",
> "currencyid": "2003",
> "steam_fee": 1,
> "publisher_fee": 3,
> "converted_price": 50,
> "converted_fee": 7,
> "converted_currencyid": "2020",
> "converted_steam_fee": 2,
> "converted_publisher_fee": 5,
> "converted_price_per_unit": 50,
> "converted_fee_per_unit": 7,
> "converted_steam_fee_per_unit": 2,
> "converted_publisher_fee_per_unit": 5,
> "asset": {
> "currency": 0,
> "appid": 730,
> "contextid": "2",
> "id": "1579403640",
> "amount": "1",
> "market_actions": [
> {
代码 + 我需要我要打印的键的值:
while 1:
r = requests.get(url, headers=headers)
listingInfoStr = r.content
result= ujson.loads(listingInfoStr)
listingInfoJson= result['listinginfo']
for listingdata in listingInfoJson:
print listingdata.get('listingId')
print listingdata.get('subTotal')
print listingdata.get('feeAmount')
print listingdata.get('totalPrice')
time.sleep(10)
感谢您的宝贵时间。
您可以使用 requests.Response.json 方法来解析 JSON:
r = requests.get(url, headers=headers)
listingInfoJson = r.json()['listinginfo']
我 运行 你的代码,它看起来像 listingInfoJson 作为字典而不是列表返回。因此,当您对其进行迭代时,它只是在拔键。
您在 unicode 对象上调用 .get 方法,这将给您一个 AttributeError。您可以 运行 此代码以不同的方式使用:
for listingdata in listingInfoJson:
print listingInfoJson[listingdata].get('listingid')
print listingInfoJson[listingdata].get('subTotal')
print listingInfoJson[listingdata].get('feeAmount')
print listingInfoJson[listingdata].get('totalPrice')
或更好的方式(编辑评论):
if listingInfoJson:
for key, value in listingInfoJson.iteritems():
print value.get('listingid')
print value.get('subTotal')
print value.get('feeAmount')
print value.get('totalPrice')
else:
print "listingInfoJson is empty"
我还会检查您的键值,listingId
应该是 listingid
我一直在摸不着头脑,为什么它不打印我需要的 json 内容。有人知道我做错了什么吗?
这是词典
> "listinginfo": {
> "438309609514180554": {
> "listingid": "438309609514180554",
> "price": 35,
> "fee": 4,
> "publisher_fee_app": 730,
> "publisher_fee_percent": "0.10000000149011612",
> "currencyid": "2003",
> "steam_fee": 1,
> "publisher_fee": 3,
> "converted_price": 50,
> "converted_fee": 7,
> "converted_currencyid": "2020",
> "converted_steam_fee": 2,
> "converted_publisher_fee": 5,
> "converted_price_per_unit": 50,
> "converted_fee_per_unit": 7,
> "converted_steam_fee_per_unit": 2,
> "converted_publisher_fee_per_unit": 5,
> "asset": {
> "currency": 0,
> "appid": 730,
> "contextid": "2",
> "id": "1579403640",
> "amount": "1",
> "market_actions": [
> {
代码 + 我需要我要打印的键的值:
while 1:
r = requests.get(url, headers=headers)
listingInfoStr = r.content
result= ujson.loads(listingInfoStr)
listingInfoJson= result['listinginfo']
for listingdata in listingInfoJson:
print listingdata.get('listingId')
print listingdata.get('subTotal')
print listingdata.get('feeAmount')
print listingdata.get('totalPrice')
time.sleep(10)
感谢您的宝贵时间。
您可以使用 requests.Response.json 方法来解析 JSON:
r = requests.get(url, headers=headers)
listingInfoJson = r.json()['listinginfo']
我 运行 你的代码,它看起来像 listingInfoJson 作为字典而不是列表返回。因此,当您对其进行迭代时,它只是在拔键。
您在 unicode 对象上调用 .get 方法,这将给您一个 AttributeError。您可以 运行 此代码以不同的方式使用:
for listingdata in listingInfoJson:
print listingInfoJson[listingdata].get('listingid')
print listingInfoJson[listingdata].get('subTotal')
print listingInfoJson[listingdata].get('feeAmount')
print listingInfoJson[listingdata].get('totalPrice')
或更好的方式(编辑评论):
if listingInfoJson:
for key, value in listingInfoJson.iteritems():
print value.get('listingid')
print value.get('subTotal')
print value.get('feeAmount')
print value.get('totalPrice')
else:
print "listingInfoJson is empty"
我还会检查您的键值,listingId
应该是 listingid