用Python提取json

2024-06-16 10:27:21 发布

您现在位置:Python中文网/ 问答频道 /正文

我有这个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())

以及

decoded = json.load(myJson.read())

以及

decoded = json.load(myJson)

但我总是有这样的错误:

AttributeError: 'str' object has no attribute 'read'

Tags: jsonurlreaddriveacheaderdecodedzoneid
3条回答

怎么样:

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)

结果是一个dict列表:

[{'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]

相关问题 更多 >