JSON的API响应文本

时间:2017-11-02 10:57:04

标签: python json rest api django-rest-framework

我使用的API会将此文本返回给我:

HTTP/1.1 0 nullContent-Type: application/json;charset=UTF-8
Date: Thu, 02 Nov 2017 10:48:39 GMT
Connection: close

{"codigoRetorno":104,"mensajeRetorno":"ENVIO DUPLICADO, ENCONTRADO MISMO NUMERO DE ENVIO CON FECHA:02/11/2017","datosResultado":null,"listaBultos":null,"etiqueta":null}

我使用"请求"使用此API:

headers = {'Content-type': 'application/json'}

result = requests.post(
    url, data=data,
    auth=HTTPBasicAuth(username, password),
    headers=headers, verify=False)

result_content = json.loads(result.content)

但是当我尝试将响应格式化为JSON时,它会给我这个错误: " ValueError:没有JSON对象可以被解码"

我猜问题是答案是文字。什么是解决这个问题的最佳方法。我想过使用正则表达式,但也许有另一种方法。

2 个答案:

答案 0 :(得分:2)

请求中有一个内置的JSON解码器。使用result.json()

可能会有更多的运气

答案 1 :(得分:1)

我不确定是否有更好的方法,但你总是可以使用正则表达式。

import json

def get_json_from_string(string):
    json_string = re.search("{(.*?)}$", string).group(0)
    return json.loads(json.dumps(json_string))