2017-04-05 125 views
4

我正在学习如何在python中使用elasticsearch(link = https://tryolabs.com/blog/2015/02/17/python-elasticsearch-first-steps/#contacto)我遇到了这个错误。给出错误“JSON对象必须是str,而不是'字节'”

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) 

类型错误:JSON对象必须str的,而不是 '字节'

回答

8

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

而不是使用json.loads(),留给requests使用response.json()方法将JSON正确地解码你,:

es.index(index='sw', doc_type='people', id=i, body=r.json()) 
相关问题