Python 转换从url检索的json

Python 转换从url检索的json,python,json,python-3.x,Python,Json,Python 3.x,我可以部分使用保存为文件的json: #! /usr/bin/python3 import json from pprint import pprint json_file='a.json' json_data=open(json_file) data = json.load(json_data) json_data.close() print(data[10]) 但我正试图通过直接从web获取数据来实现同样的目的。我正在尝试一个公认的答案: 这给了我一个错误: Traceback (

我可以部分使用保存为文件的json:

#! /usr/bin/python3

import json
from pprint import pprint

json_file='a.json'
json_data=open(json_file)
data = json.load(json_data)
json_data.close()
print(data[10])
但我正试图通过直接从web获取数据来实现同样的目的。我正在尝试一个公认的答案:

这给了我一个错误:

  Traceback (most recent call last):
  File "i.py", line 10, in <module>
    data = json.load(jsonget)
  File "/usr/lib64/python3.5/json/__init__.py", line 268, in load
    parse_constant=parse_constant, object_pairs_hook=object_pairs_hook, **kw)
  File "/usr/lib64/python3.5/json/__init__.py", line 312, in loads
    s.__class__.__name__))
TypeError: the JSON object must be str, not 'bytes'
json.load处中断:

Traceback (most recent call last):
  File "i.py", line 9, in <module>
    data = json.load(jsonget)
  File "/usr/lib64/python3.5/json/__init__.py", line 265, in load
    return loads(fp.read(),
AttributeError: 'str' object has no attribute 'read'
回溯(最近一次呼叫最后一次):
文件“i.py”,第9行,在
data=json.load(jsonget)
文件“/usr/lib64/python3.5/json/__init__uuu.py”,第265行,已加载
返回加载(fp.read(),
AttributeError:“str”对象没有属性“read”

它实际上告诉了你答案:你得到的是一个字节数组,在Python 3中,字符串是不同的,因为它处理的是unicode。在Python 2.7中,它可以工作。你应该能够通过将字节显式转换为字符串来修复它

jsonget=str(urlopen("http://api.crossref.org/works?query.author=Rudra+Banerjee")_

@alecxe:我可以谦虚地问一下您是否已经运行了代码(它是最小的和完整的)在建议重复和可能的结束投票之前?如果它不是真正的重复,我很抱歉,但它看起来确实像。如果您能解释为什么这是一个不同的用例,我愿意重新打开这个问题。谢谢。至于您的上一个问题,因为您现在有一个字符串,请使用
json.load()
而不是
json.load()
@alecxe:loads也失败了。事实上,这就是为什么我加载了完整的代码,并询问(再次谦恭地)您是否真的运行了它。如果它可能是重复的,我可以这样标记它……我们都希望如此干净。但问题不是我想的。但是,我没有处理json的经验。
data=json.loads(jsonget.read().decode())
Traceback (most recent call last):
  File "i.py", line 9, in <module>
    data = json.load(jsonget)
  File "/usr/lib64/python3.5/json/__init__.py", line 265, in load
    return loads(fp.read(),
AttributeError: 'str' object has no attribute 'read'
jsonget=str(urlopen("http://api.crossref.org/works?query.author=Rudra+Banerjee")_