用Python提取json
我有这个JSON用Python提取json,python,json,python-2.7,Python,Json,Python 2.7,我有这个JSON myJson = [{"linkId":"changeDriveLink","url":"/drive/rayon.header.changedrivelink?t:ac=3686962/3696434","zoneId":"forceAjax"}, {"linkId":"affichePopinProduit","url":"/drive/rayon.header.promosmenu.thumbnailproduct.affichepopin
myJson = [{"linkId":"changeDriveLink","url":"/drive/rayon.header.changedrivelink?t:ac=3686962/3696434","zoneId":"forceAjax"},
{"linkId":"affichePopinProduit","url":"/drive/rayon.header.promosmenu.thumbnailproduct.affichepopinproduit/804106/Paysan$0020Breton$0020beurre$0020moul$00e9$0020demi-sel$0020250g/$N?t:ac=3686962/3696434","zoneId":"forceAjax"},
{"linkId":"addProductToShoppingList2","url":"/drive/rayon.header.promosmenu.thumbnailproduct.addproducttoshoppinglist2/804106/Paysan$0020Breton$0020beurre$0020moul$00e9$0020demi-sel$0020250g?t:ac=3686962/3696434","zoneId":"forceAjax"}]
我想拥有URL,我尝试了:
decoded = json.loads(myJson.read())
及
及
但我总是有这样的错误:
AttributeError: 'str' object has no attribute 'read'
那么:
decoded = json.loads(myJson)
当我运行它时,它不会给出任何错误。您不需要read(),只需转储它(如果没有字符串表示),然后加载它
import json
myJson = [{"linkId":"changeDriveLink","url":"/drive/rayon.header.changedrivelink?t:ac=3686962/3696434","zoneId":"forceAjax"},{"linkId":"affichePopinProduit","url":"/drive/rayon.header.promosmenu.thumbnailproduct.affichepopinproduit/804106/Paysan$0020Breton$0020beurre$0020moul$00e9$0020demi-sel$0020250g/$N?t:ac=3686962/3696434","zoneId":"forceAjax"},{"linkId":"addProductToShoppingList2","url":"/drive/rayon.header.promosmenu.thumbnailproduct.addproducttoshoppinglist2/804106/Paysan$0020Breton$0020beurre$0020moul$00e9$0020demi-sel$0020250g?t:ac=3686962/3696434","zoneId":"forceAjax"}]
myJson = json.dumps(myJson)
json.loads(myJson)
结果是一个目录列表:
[{'linkId': 'changeDriveLink',
'url': '/drive/rayon.header.changedrivelink?t:ac=3686962/3696434',
'zoneId': 'forceAjax'},
{'linkId': 'affichePopinProduit',
'url': '/drive/rayon.header.promosmenu.thumbnailproduct.affichepopinproduit/804106/Paysan$0020Breton$0020beurre$0020moul$00e9$0020demi-sel$0020250g/$N?t:ac=3686962/3696434',
'zoneId': 'forceAjax'},
{'linkId': 'addProductToShoppingList2',
'url': '/drive/rayon.header.promosmenu.thumbnailproduct.addproducttoshoppinglist2/804106/Paysan$0020Breton$0020beurre$0020moul$00e9$0020demi-sel$0020250g?t:ac=3686962/3696434',
'zoneId': 'forceAjax'}]
这里不需要“加载”或“转储”。您已经有了正确的列表目录数据。 对于“url”,只需使用
[i['url'] for i in myJson]
什么是
myJson
?在哪里声明该变量。似乎您正在为它分配一个字符串。如果myJson是一个字符串,您可能只需要decoded=json.loads(myJson)
。如果myJson
与您声明的完全相同,那么它已经是一个dict列表。你想读还是写JSON?@tobias_k是的,我需要使用URL的3个数据。你能解释更多吗?我不想解开你的循环看看
[{'linkId': 'changeDriveLink',
'url': '/drive/rayon.header.changedrivelink?t:ac=3686962/3696434',
'zoneId': 'forceAjax'},
{'linkId': 'affichePopinProduit',
'url': '/drive/rayon.header.promosmenu.thumbnailproduct.affichepopinproduit/804106/Paysan$0020Breton$0020beurre$0020moul$00e9$0020demi-sel$0020250g/$N?t:ac=3686962/3696434',
'zoneId': 'forceAjax'},
{'linkId': 'addProductToShoppingList2',
'url': '/drive/rayon.header.promosmenu.thumbnailproduct.addproducttoshoppinglist2/804106/Paysan$0020Breton$0020beurre$0020moul$00e9$0020demi-sel$0020250g?t:ac=3686962/3696434',
'zoneId': 'forceAjax'}]
[i['url'] for i in myJson]