【问题标题】:extract json by Python [closed]通过Python提取json [关闭]
【发布时间】:2016-08-19 00:34:15
【问题描述】:

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

我想要网址,我试过了:

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

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

decoded = json.load(myJson)

但我总是有这个错误:

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

【问题讨论】:

  • 什么是myJson?您在哪里声明该变量。好像你给它分配了一个字符串。
  • 如果 myJson 是一个字符串,你可能只需要decoded = json.loads(myJson)
  • 如果myJson 与您声明的完全一样,那么它已经是一个字典列表。你想读取还是写入那个JSON?
  • @tobias_k 是的,我需要使用 URL 的 3 个数据

标签: python json python-2.7


【解决方案1】:

怎么样:

decoded = json.loads(myJson)

当我运行它时不会出现任何错误。

【讨论】:

    【解决方案2】:

    您不需要 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'}]
    

    【讨论】:

      【解决方案3】:

      这里不需要“加载”或“转储”。您已经拥有正确的 list-dict 数据。 for 'url' 只使用

      [i['url'] for i in myJson]
      

      【讨论】:

      • 你能解释一下吗,我不明白你的循环对于
      • 看看here
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2015-01-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-09-22
      • 2013-05-29
      相关资源
      最近更新 更多