2017-11-02 2 views
2

Ich bin eine API, die mir diesen Text zurückgibt:API Antworttext zu JSON

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} 

I "Anfragen" verwenden diese API zu verwenden:

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) 

Aber wenn ich versuche zu Format die Antwort auf JSON es mir diesen Fehler gibt: „Valueerror: kein JSON-Objekt decodiert werden kann“

ich, dass die erraten Problem ist die Antwort ist Text. Was ist der beste Weg, um dieses Problem zu lösen? Ich dachte über einen regulären Ausdruck nach, aber vielleicht gibt es eine andere Methode.

Antwort

1

Ich bin mir nicht sicher, ob es einen besseren Weg gibt, aber Sie können immer mit einem regulären Ausdruck verwenden.

import json 

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

Es gibt einen eingebauten JSON-Decoder in Anfragen. Vielleicht haben Sie mehr Glück mit result.json()

+0

Ich habe das auch gebunden. Aber es funktioniert nicht –

+0

Sie sind besser dran, um es mit dem eingebauten Decoder arbeiten zu bekommen. Gibt das die gleiche Fehlermeldung? –

+0

Ich erhalte diesen Fehler: "simplejson.scanner.JSONDecodeError: Erwartungswert: Zeile 1 Spalte 1 (Zeichen 0)" –

Verwandte Themen