给出错误"JSON对象必须是str,而不是'bytes'"

Tai*_*Ali 4 python json python-requests

我正在关注如何使用带有python的弹性搜索的教程(link = https://tryolabs.com/blog/2015/02/17/python-elasticsearch-first-steps/#contacto)我遇到了这个错误.

import json
    r = requests.get('http://localhost:9200') 
    i = 1
    while r.status_code == 200:
        r = requests.get('http://swapi.co/api/people/'+ str(i))
        es.index(index='sw', doc_type='people', id=i, body=json.loads(r.content))
        i=i+1

    print(i)
Run Code Online (Sandbox Code Playgroud)

TypeError:JSON对象必须是str,而不是'bytes'

Mar*_*ers 8

您正在使用Python 3,而博客文章的目标是Python 2.Python 3 json.loads()函数需要解码的unicode文本,而不是原始响应字节串,这是response.content返回的.

而不是使用json.loads()它,通过使用方法,让它为您requests正确解码JSON :response.json()

es.index(index='sw', doc_type='people', id=i, body=r.json())
Run Code Online (Sandbox Code Playgroud)