Was tun, wenn in python json .dumps eine Dezimalstelle enthalten ist?

Einführung

Wenn DynamoDB beispielsweise int / float-ähnliche numerische Daten verarbeitet, werden die Daten als Dezimalzahl abgerufen. Wenn ich Pythons Standard json.dumps für Abfragen ausführe und Elemente erhalte, die diese Art von Daten enthalten, erhalte ich aufgrund des Typs, der nicht konvertiert werden kann, eine Ausnahme. Also vergesse ich immer, wie ich damit umgehen soll, also werde ich eine Notiz hinterlassen. (Ähnliches und ähnliches passiert mit dem Datetime-Typ) Wenn json.dumps mit einem Typfehler fehlschlägt, können Sie dies beheben, indem Sie eine Konvertierungsfunktion bereitstellen.

An erster Stelle

Sie können Standard als Argument für json.dumps angeben. Wenn Sie hier eine Konvertierungsfunktion festlegen, können Sie den Nichtzieltyp selbst behandeln und in Ihren Lieblingstyp konvertieren. Auszug aus dem unten stehenden Beamten

Wenn Sie> default angeben, geben Sie eine Funktion an. Diese Funktion wird für Objekte aufgerufen, die ansonsten nicht serialisiert werden können. Die Funktion muss das Objekt in einer JSON-codierten Version zurückgeben oder einen TypeError auslösen. Wenn nicht angegeben, wird TypeError ausgelöst.

tatsächlich?

Bereiten Sie eine Konvertierungsfunktion vor.

from decimal import Decimal

def decimal_to_int(obj):
    if isinstance(obj, Decimal):
        return int(obj)

Beim Ausführen von json.dump

json.dumps(your_val, default=decimal_to_int)

Legen Sie einfach die Konvertierungsfunktion im Standardargument fest.

Dieses Mal habe ich nur geschrieben, um Dezimalzahlen zu konvertieren. Wenn Sie jedoch die für die Typkonvertierungsfunktion erwartete Typprüfung und Konvertierungslogik vorbereiten, können mehrere Typen unterstützt werden. Beispielsweise wird datetime als mit strftime formatierte Zeichenfolge zurückgegeben. Es wäre also nützlich, wenn Sie die Struktur der Funktionen verstehen könnten, die Sie für selbstverständlich halten. Wenn Sie es richtig verstehen möchten, überprüfen Sie bitte hier.

Es ist ein sehr kurzer Artikel, aber ich vergesse ihn immer, also ist es fast mein eigenes Memo.

Was sonst?

simplejson scheint viele Typen zu unterstützen. Ich habe es nie benutzt. Wenn Sie es mit AWS Lambda verwenden möchten, ist es nicht im Standardpaket enthalten. Fügen Sie es daher selbst zum Paket hinzu (https://docs.aws.amazon.com/ja_jp/lambda/latest/dg/python-package). Sie müssen sich als [html] oder Lambda Layer registrieren.

Recommended Posts

Was tun, wenn in python json .dumps eine Dezimalstelle enthalten ist?
Was tun, wenn in Python minus Null angezeigt wird?
Was tun, wenn in pip ein Unicode-Dekodierungsfehler auftritt?
Was tun, wenn in Sublime Text Python ein Unicode-Codierungsfehler auftritt?
Was tun, wenn `Argumente [0] .scrollIntoView ();` in Python-Selen fehlschlägt?
Was tun, wenn pip in Homebrew einen DistributionError ausgibt?
Was tun, wenn in tf.train.start_queue_runners () ein 0xC0000005-Fehler auftritt?
Was tun, wenn der Fortschrittsbalken in tqdm von Python nicht angezeigt wird?
Was tun, wenn Pythons IntelliSense in VS Code unter Windows nicht angezeigt wird?
Was tun, wenn "Unbenannt: 0" in_csv-> read_csv von Pandas hinzugefügt wird?
Was tun, wenn der Werttyp in Python nicht eindeutig ist?
Was tun, wenn aufgrund der Proxy-Einstellungen in Python Web Scraping keine Antwort erfolgt?
Was tun, wenn pipreqs zu UnicodeDecodeError führt?
Was tun, wenn Sie die Rastersuche von sklearn in Python nicht verwenden können?
So erstellen Sie eine JSON-Datei in Python
Was tun, wenn in pydoc keine Python-Dokumentation für ... gefunden wird?
Was tun, um eine Google-Tabelle in Python zu erhalten?
Was passiert, wenn Sie in Python "A, B als C importieren"?
Was tun, wenn eine Warnmeldung in der Pip-Liste angezeigt wird?
Was tun, wenn im Chrome-Webtreiber (Selenium) die Fehlermeldung "Beim Anzeigen dieser Webseite ist ein Problem aufgetreten" angezeigt wird?
Was tun, wenn PyInstaller3.5 einen Fehler in Python3.8 verursacht (TypeError: Eine Ganzzahl ist erforderlich (Typbytes erhalten))
Was tun, wenn beim Importieren von Lebensläufen ein symbolischer Linkfehler auftritt, während versucht wird, OpenCV in Python zu installieren?
Was tun, wenn auf pipenv der Fehler "Keine Versionen gefunden" angezeigt wird?
Was tun, wenn eine Warnung zur Python-Integration in Neovims CheckHealth angezeigt wird?
Was tun, wenn "Python nicht konfiguriert" angezeigt wird? Verwenden von PyDev in Eclipse
Was tun, wenn bei der Eingabe eines Kameravideos in OpenCV ein Abbruch angezeigt wird?
Was tun, wenn NotADirectoryError: [Errno 20] Kein Verzeichnis: 'xdg-settings' wird im Jupyter-Notizbuch angezeigt
Was tun, wenn im Selenium Chrome-Treiber ein Versionsfehler auftritt?
Überprüfen Sie, ob die Zeichenfolge eine Zahl in Python ist
Analysieren Sie eine JSON-Zeichenfolge, die in eine Datei in Python geschrieben wurde
Was tun, wenn die Pip-Installation in Xcode 5.1 fehlschlägt?
Was tun, wenn pyenv nicht aktiviert ist (zsh)
Ich habe ein Skript erstellt, um zu überprüfen, ob an der angegebenen Position der JSON-Datei in Python Englisch eingegeben wird.
Was tun, wenn in Hydrogen "Kein Kernel für Sprachpython gefunden" angezeigt wird?
Was tun, wenn der Druckbefehl selbst einen Fehler in Mayas Python verursacht?
Was tun, wenn beim Importieren von matplotlib in Python (Mac) eine Fehlermeldung angezeigt wird?
So überprüfen Sie in Python, ob sich eines der Elemente einer Liste in einer anderen Liste befindet
Was tun, wenn Sortierimporte in der Python-Erweiterung von VSCode hängen bleiben (um 2020/09)?
Was tun, wenn Python in pyenv nicht von der Systemversion wechselt?
Was tun, wenn Sie Python auf IntelliJ ausführen und mit einem Fehler beenden?
Was tun, wenn der Fehler RuntimeError angezeigt wird: Python wird nicht als Framework installiert, wenn Sie versuchen, matplitlib und pylab in Python 3.3 zu verwenden
Warum ist Pythons main () -if-Anweisung angehängt?
Was tun, wenn Overalls "Abdeckung unbekannt" werden?
Was tun, wenn in Python "SSL: CERTIFICATE_VERIFY_FAILED _ssl.c: 1056" angezeigt wird?
Was tun, wenn Sie sich nicht als root anmelden können?
[Python] Was ist eine Zip-Funktion?
[Python] Was ist eine with-Anweisung?
[Python] Wie man PCA mit Python macht
Was tun, wenn Yum kaputt geht?
Gibt es ein besonderes in scipy? ??
Was tun, wenn das Bild nicht mit matplotlib usw. im Docker-Container angezeigt wird?
Was tun, wenn ein nicht in pom.xml definiertes Glas zu einem fehlenden Artefakt wird?
Was tun mit PYTHON Release?
Was tun, wenn Swagger-Codegen mit Python und Importfehler ausgeführt wird? Es wird kein Modul mit dem Namen angezeigt
In Python gibt es keinen Schalter
Was tun, wenn bei yum ein Metalink für Repository-Fehler nicht abgerufen werden kann?