Que faire s'il y a un décimal dans python json .dumps

introduction

Par exemple, si DynamoDB gère des données numériques de type int / float, les données seront récupérées sous forme décimale. Lorsque j'exécute json.dumps standard de python sur des requêtes et que j'obtiens des éléments contenant ce type de données, j'obtiens une exception en raison du type qui ne peut pas être converti. Donc, j'oublie toujours comment gérer cela, alors je vais laisser une note. (Similaire et similaire se produit avec le type Datetime) Si json.dumps échoue avec une erreur de type, vous pouvez le gérer en fournissant une fonction de conversion.

En premier lieu

Vous pouvez spécifier default comme argument de json.dumps. En définissant une fonction de conversion ici, vous pouvez gérer vous-même le type non cible et le convertir en votre type préféré. Extrait du fonctionnaire ci-dessous

Si vous spécifiez> default, spécifiez une fonction, et cette fonction sera appelée pour les objets qui ne peuvent pas être sérialisés autrement. La fonction doit renvoyer l'objet dans une version codée JSON ou déclencher une TypeError. S'il n'est pas spécifié, TypeError sera levé.

réellement?

Préparez une fonction de conversion.

from decimal import Decimal

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

Lors de l'exécution de json.dump

json.dumps(your_val, default=decimal_to_int)

Définissez simplement la fonction de conversion dans l'argument par défaut.

Cette fois, je n'ai écrit que pour convertir des décimales, mais si vous préparez la vérification de type et la logique de conversion attendues pour la fonction de conversion de type, il est possible de prendre en charge plusieurs types. Par exemple, datetime est renvoyé sous la forme d'une chaîne formatée avec strftime. Donc, il serait utile que vous puissiez comprendre la structure des fonctions que vous utilisez pour acquis. Donc, si vous voulez bien le comprendre, veuillez vérifier ici.

C'est un article très court, mais je l'oublie toujours, donc c'est presque mon propre mémo.

Quoi d'autre?

simplejson semble prendre en charge de nombreux types. Je ne l'ai jamais utilisé. Si vous souhaitez l'utiliser avec AWS Lambda, il n'est pas inclus dans le package standard, donc [Ajoutez-le vous-même au package](https://docs.aws.amazon.com/ja_jp/lambda/latest/dg/python-package. Vous devez vous inscrire en tant que [html) ou Lambda Layer.

Recommended Posts

Que faire s'il y a un décimal dans python json .dumps
Que faire si vous obtenez moins zéro en Python
Que faire si une erreur de décodage Unicode se produit dans pip
Que faire si une erreur de codage Unicode se produit dans Sublime Text Python
Que faire lorsque ʻarguments [0] .scrollIntoView (); `échoue dans python sélénium
Que faire si pip donne une DistributionError dans Homebrew
Que faire si une erreur 0xC0000005 se produit dans tf.train.start_queue_runners ()
Que faire si la barre de progression n'est pas affichée dans tqdm de python
Que faire si vous ne voyez pas IntelliSense de Python dans VS Code sous Windows
Que faire si «Sans nom: 0» est ajouté dans to_csv-> read_csv des pandas
Que faire lorsque le type de valeur est ambigu en Python?
Que faire s'il n'y a pas de réponse en raison des paramètres de proxy dans le scraping Web Python
Que faire si pipreqs aboutit à UnicodeDecodeError
Que faire si vous ne pouvez pas utiliser la recherche de grille de sklearn en Python
Comment créer un fichier JSON en Python
Que faire si aucune documentation Python trouvée pour ... apparaît dans pydoc
Que faire pour obtenir une feuille de calcul Google en Python
Que se passe-t-il si vous "importez A, B comme C" en Python?
Que faire lorsqu'un message d'avertissement est affiché dans la liste des pip
Que faire si un message d'erreur "Un problème est survenu lors de l'affichage de cette page Web" s'affiche dans le pilote Web de Chrome (Selenium)
Que faire si PyInstaller3.5 provoque une erreur dans Python3.8 (TypeError: un entier est requis (obtenu les octets de type))
Que faire si une erreur de lien symbolique se produit dans l'importation cv lors de la tentative d'installation d'OpenCV en Python
Que faire si vous obtenez une erreur "Aucune version trouvée" sur pipenv
Que faire lorsqu'un avertissement apparaît autour de l'intégration de Python dans CheckHealth de Neovim
Que faire si vous obtenez «Python non configuré». Utilisation de PyDev dans Eclipse
Que faire si l'abandon s'affiche lors de la saisie d'une vidéo de caméra dans OpenCV
Que faire si NotADirectoryError: [Errno 20] Pas un répertoire: 'xdg-settings' apparaît dans le notebook jupyter
Que faire si une erreur de version se produit dans le pilote Selenium Chrome
Vérifiez si la chaîne est un nombre en python
Analyser une chaîne JSON écrite dans un fichier en Python
Que faire si l'installation de pip échoue dans Xcode 5.1
Que faire si pyenv n'est pas activé (zsh)
J'ai créé un script pour vérifier si l'anglais est entré dans la position spécifiée du fichier JSON en Python.
Que faire quand "Aucun noyau pour le langage python trouvé" apparaît dans Hydrogen
Que faire si la commande d'impression elle-même provoque une erreur dans le python de Maya
Que faire si vous obtenez une erreur lors de l'importation de matplotlib en Python (Mac)
Comment vérifier en Python si l'un des éléments d'une liste est dans une autre liste
Que faire si les importations de tri restent bloquées dans l'extension Python de VSCode (vers 2020/09)
Que faire lorsque Python ne passe pas de la version système dans pyenv
Que faire si vous exécutez python sur IntelliJ et quittez avec une erreur
Que faire si vous obtenez l'erreur RuntimeError: Python n'est pas installé en tant que framework lorsque vous essayez d'utiliser matplitlib et pylab dans Python 3.3
Pourquoi l'instruction main () -if de Python est-elle attachée?
Que faire si Combinaisons devient «couverture inconnue»
Que faire lorsque "SSL: CERTIFICATE_VERIFY_FAILED _ssl.c: 1056" apparaît en Python
Que faire si vous ne pouvez pas vous connecter en tant que root
[Python] Qu'est-ce qu'une fonction zip?
[Python] Qu'est-ce qu'une instruction with?
[Python] Comment faire PCA avec Python
Que faire si yum casse
Y a-t-il un spécial dans scipy? ??
Que faire si l'image n'est pas affichée à l'aide de matplotlib etc. dans le conteneur Docker
Que faire lorsqu'un artefact manquant se produit dans un fichier jar qui n'est pas défini dans pom.xml
Que faire avec la sortie de PYTHON?
Que faire lorsque swagger-codegen est terminé avec python et Erreur d'importation: aucun module nommé n'apparaît
Il n'y a pas de commutateur en python
Que faire si vous obtenez une erreur Impossible de récupérer le lien métallique pour le référentiel avec yum