2016-04-22 19 views
0

添付されたJSONをループして、データ内の各アイテムの名前と価格を表示しようとしています。私の問題は、ファーストネームと50倍以上の価格を印刷することを繰り返すことです。私は何が欠けていますか?次のアイテムを表示するにはどうすればいいですか?これは私がコードを基にしたサンプルデータです。PythonリクエストとJson forループ

マイコード

import json 
import requests 

request = requests.get('http://example.com/json') 

for item in request: 
    data = request.json() 
    data = data['items'][0] 
    price = data['salePrice'] 
    name = data['name'] 
    print name 

データ

{"items":[ { 
    "itemId" : 5969538, 
    "parentItemId" : 5969538, 
    "name" : "Breakfast Nook 3 Piece Corner Dining Set, Black", 
    "salePrice" : 288.99, 
    "shortDescription" : "Create extra space and a cozy area to dine and relax with this stylish nook corner dining set. A rich black finish adds sophistication to any dining area, while the corner seats and additional bench provide comfortable seating for up to five people. Coordinate with your decor by adding colorful seating pads or pillows.<br><br><b>Product Details:</b><ul><li>Four piece set</li><li>Constructed of durable MDF</li><li>Rich, black finish</li><li>Includes two corner/wall nooks with seating, one table and one bench</li><li>Assembly required</li><li><b>Please note that all pieces are shipped separately.</b></li></ul>", 
    "longDescription" : "<br><ul><li style="list-style: none"><b>Product Details:</b></li><li>Four piece set</li><li>Constructed of durable MDF</li><li>Rich, black finish</li><li>Includes two corner/wall nooks with seating, one table and one bench</li><li>Assembly required</li><li>Please do not use power tool for assembly</li><li><b>Please note that all pieces are shipped separately.</b></li><li>Dimensions for the Dining Set:</li><li>Longer Nook side - 63 1/2 x 20 x 34"H</li><li>Shorter Nook side - 48 x 20 x 34"H</li><li>Nook Table - 43 x 27 1/2 x 29"H</li><li>Nook Bench - 40 x 12 x 18"H</li></ul>", 
    "thumbnailImage" : "http://i5.walmartimages.com/dfw/dce07b8c-9fb4/k2-_880ab0c8-ac73-4b5a-be2e-1cbd7692a65f.v1.jpg", 
    "mediumImage" : "http://i5.walmartimages.com/dfw/dce07b8c-4173/k2-_b77791c6-a10b-494a-8243-f639c57e0284.v1.jpg", 
    "largeImage" : "http://i5.walmartimages.com/dfw/dce07b8c-7add/k2-_d523b272-e4dd-4eb0-ab9b-d48c39d3fa2f.v1.jpg", 
    "productTrackingUrl" : "http://linksynergy.walmart.com/fs-bin/click?id=|LSNID|&offerid=223073.7200&type=14&catid=8&subid=0&hid=7200&tmpid=1082&RD_PARM1=http%253A%252F%252Fwww.walmart.com%252Fip%252FBreakfast-Nook-3-Piece-Corner-Dining-Set-Black%252F5969538%253Faffp1%253D%257Capk%257C%2526affilsrc%253Dapi", 
    "ninetySevenCentShipping" : false, 
    "color" : "Black", 
    "marketplace" : false, 
    "shipToStore" : false, 
    "freeShipToStore" : false, 
    "productUrl" : "http://c.affil.walmart.com/t/api00rb?l=http%3A%2F%2Fwww.walmart.com%2Fip%2FBreakfast-Nook-3-Piece-Corner-Dining-Set-Black%2F5969538%3Faffp1%3D%7Capk%7C%26affilsrc%3Dapi%26veh%3Daff%26wmlspartner%3Dreadonlyapi", 
    "customerRating" : "2.88", 
    "numReviews" : 1, 
    "customerRatingImage" : "http://i2.walmartimages.com/i/CustRating/2_9.gif", 
    "rollBack" : true, 
    "bundle" : true, 
    "clearance" : false, 
    "stock" : "Not available", 
    "addToCartUrl" : "http://c.affil.walmart.com/t/api00rb?l=http%3A%2F%2Faffil.walmart.com%2Fcart%2FaddToCart%3Fitems%3D5969538%7C1%26affp1%3D%7Capk%7C%26affilsrc%3Dapi%26veh%3Daff%26wmlspartner%3Dreadonlyapi", 
    "affiliateAddToCartUrl" : "http://linksynergy.walmart.com/fs-bin/click?id=|LSNID|&offerid=223073.7200&type=14&catid=8&subid=0&hid=7200&tmpid=1082&RD_PARM1=http%253A%252F%252Faffil.walmart.com%252Fcart%252FaddToCart%253Fitems%253D5969538%257C1%2526affp1%253D%257Capk%257C%2526affilsrc%253Dapi", 
    "freeShippingOver50Dollars" : true, 
    "availableOnline" : false 
}, { 
    "itemId" : 12321374, 
    "parentItemId" : 12321374, 
    "name" : "Castle Tent Loft Bed w/ Slide ; Under Bed Storage, Blue", 
    "salePrice" : 369.01, 
    "shortDescription" : "Finished in White powder coat with Blue and Red Microfiber fabric tent", 
    "longDescription" : "Fun Castle Tent Bunk Bed with Slide includes a tent over twin bed and a covered hiding place below. The covered hiding place below can also be used as under bed storage. The top of the slide is tented with a tower with peek through, fold down window covers. <ul class="noindent"><li>Finished in White powder coat with Blue and Red Microfiber fabric tent, 100% polyester.</li><li>Uses a standard twin size mattress (sold separately).</li><li>Only use a twin size mattress that is 74-75" long and 37.5-38.5" wide.</li><li>Bunk bed is tested and certified by an independent testing laboratory to meet all minimum requirements of ASTM F1427-07 and U.S. CFR 1213 and 1513.</li><li>Some assembly required. 79-3/4" x 101-1/4" x 92" tall.</li></ul>", 
    "brandName" : "Castle", 
    "thumbnailImage" : "http://i5.walmartimages.com/dfw/dce07b8c-ea8c/k2-_de3d4207-5781-465c-8fd6-746ae39b7794.v1.jpg", 
    "mediumImage" : "http://i5.walmartimages.com/dfw/dce07b8c-1bf5/k2-_2ba95697-6422-436a-a172-4060385cfa91.v1.jpg", 
    "largeImage" : "http://i5.walmartimages.com/dfw/dce07b8c-919a/k2-_f9459e66-7a1f-4603-8531-3182b916612b.v1.jpg", 
    "productTrackingUrl" : "http://linksynergy.walmart.com/fs-bin/click?id=|LSNID|&offerid=223073.7200&type=14&catid=8&subid=0&hid=7200&tmpid=1082&RD_PARM1=http%253A%252F%252Fwww.walmart.com%252Fip%252FCastle-Tent-Loft-Bed-w-Slide-Under-Bed-Storage-Blue%252F12321374%253Faffp1%253D%257Capk%257C%2526affilsrc%253Dapi", 
    "ninetySevenCentShipping" : false, 
    "size" : "Twin", 
    "color" : "Blue", 
    "marketplace" : false, 
    "shipToStore" : false, 
    "freeShipToStore" : false, 
    "productUrl" : "http://c.affil.walmart.com/t/api00rb?l=http%3A%2F%2Fwww.walmart.com%2Fip%2FCastle-Tent-Loft-Bed-w-Slide-Under-Bed-Storage-Blue%2F12321374%3Faffp1%3D%7Capk%7C%26affilsrc%3Dapi%26veh%3Daff%26wmlspartner%3Dreadonlyapi", 
    "customerRating" : "4.574", 
    "numReviews" : 54, 
    "customerRatingImage" : "http://i2.walmartimages.com/i/CustRating/4_6.gif", 
    "rollBack" : true, 
    "bundle" : true, 
    "clearance" : false, 
    "stock" : "Not available", 
    "gender" : "Boys", 
    "addToCartUrl" : "http://c.affil.walmart.com/t/api00rb?l=http%3A%2F%2Faffil.walmart.com%2Fcart%2FaddToCart%3Fitems%3D12321374%7C1%26affp1%3D%7Capk%7C%26affilsrc%3Dapi%26veh%3Daff%26wmlspartner%3Dreadonlyapi", 
    "affiliateAddToCartUrl" : "http://linksynergy.walmart.com/fs-bin/click?id=|LSNID|&offerid=223073.7200&type=14&catid=8&subid=0&hid=7200&tmpid=1082&RD_PARM1=http%253A%252F%252Faffil.walmart.com%252Fcart%252FaddToCart%253Fitems%253D12321374%257C1%2526affp1%253D%257Capk%257C%2526affilsrc%253Dapi", 
    "freeShippingOver50Dollars" : true, 
    "availableOnline" : false 
}, { 
    "itemId" : 13241485, 
    "parentItemId" : 13241485, 
    "name" : "Extra Large Kitchen Cart, Black with Wood Top", 
    "salePrice" : 235.0, 
    "shortDescription" : "Add extra workspace and storage in your kitchen with this large kitchen cart. It features a natural wood top, two spacious drawers and a three-door storage cabinet with adjustable shelf.<br><br>This item ships in two separate boxes and may not arrive at the same time.", 
    "longDescription" : "<br><ul><li>Large kitchen cart</li><li>Constructed of rubber wood, MDF and particle board</li><li>Natural wood top with black finish</li><li>2 utility drawers</li><li>3-door storage cabinet with adjustable shelf</li><li>Towel holder on side</li><li>Casters for mobility</li><li>Measures: 48''L x 18''W x 36''H</li><li>Model# 60048BLK</li></ul><br><b>Please note: This item ships in 2 boxes and each piece may arrive separately.</b>", 
    "thumbnailImage" : "http://i5.walmartimages.com/dfw/dce07b8c-d920/k2-_bc669a17-f759-45c3-92ee-5650c01c5a03.v2.jpg", 
    "mediumImage" : "http://i5.walmartimages.com/dfw/dce07b8c-9894/k2-_abd938ee-150f-423a-a0e9-16ce325facf2.v2.jpg", 
    "largeImage" : "http://i5.walmartimages.com/dfw/dce07b8c-ff4f/k2-_1ea295f1-7480-4e86-8d5e-a516b4721f08.v2.jpg", 
    "productTrackingUrl" : "http://linksynergy.walmart.com/fs-bin/click?id=|LSNID|&offerid=223073.7200&type=14&catid=8&subid=0&hid=7200&tmpid=1082&RD_PARM1=http%253A%252F%252Fwww.walmart.com%252Fip%252FExtra-Large-Kitchen-Cart-Black-with-Wood-Top%252F13241485%253Faffp1%253D%257Capk%257C%2526affilsrc%253Dapi", 
    "ninetySevenCentShipping" : false, 

答えて

2

それが原因でこの線のだ:ここで

data = data['items'][0] 

明示的にアクセスしたそのループの各反復の最初の項目。

代わりにこれを試してみてください:

data = request.json() 
items = data['items'] 

for item in items: 
    price = item['salePrice'] 
    name = item['name'] 
    print name 
+1

使用 'dict.get( 'PARAMETER_NAME'、defaul_valueを)'。いくつかの項目はパラメータをソーンしません。 – JRazor