Ich versuche Postdaten an eine API zu senden, die in JSON sein muss. Wenn der Requests-Header Content-type: application-json
nicht hat, schlägt die Anfrage fehl und ich bekomme eine HTTPError: 415 Client Error: Unsupported Media Type for url
Umgang mit Dezimal zu Json in Anfragen-Bibliothek
Allerdings scheint nur Anfragen in diesem Header hinzuzufügen, wenn ich den integrierten JSON-Parser verwende. Auch wenn die Dokumente, die unten vorzuschlagen scheinen entspricht:
>>> r = requests.post(url, data=json.dumps(payload))
>>> r = requests.post(url, json=payload)
Was bedeutet, dass ich den eingebauten json-Parser (die Content-Type-Header oder manuell hinzufügen) verwenden müssen.
jedoch meine Post-Daten mehr Dezimal Felder haben (von api über json.loads(response.text, parse_float=decimal.Decimal)
umgewandelt in einem django DecimalField gespeichert werden), die, wenn die eingebauten Anfragen Parser geben den Fehler:
TypeError: Decimal('1560.35') is not JSON serialisable
Gibt es eine Möglichkeit, ich kann Verwenden Sie einen anderen JSON-Parser mit Anfragen (zB simplejson, der sich mit Dezimalzahlen beschäftigt) und lassen Sie den Inhaltstyp noch angeben.
"die Dokumente scheinen zu empfehlen": Wo? –
Kannst du es nicht als String speichern? – Kavli