用Python提取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

我有这个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"}]
我想拥有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]