Dans notre utilisation quotidienne de Python, nous utilisons souvent le format json pour stocker certaines données, notamment dans le développement web. Cependant, la bibliothèque json native de Python a des performances médiocres et peu de fonctions, et ne peut répondre qu'aux besoins simples et légers de stockage et de conversion de données json.
La bibliothèque json tierce orjson que je souhaite vous présenter dans cet article a écrasé json, ujson, rapidjson, simplejson et d'autres dans divers tests de performances de référence publics avec un avantage de performances de plusieurs fois à des dizaines de fois. .Python et possède de nombreuses fonctions supplémentaires. Jetons un coup d'œil à ses méthodes communes~
orjson prend en charge toutes les versions de Python 64 bits de 3.7 à 3.10. La version d'orjson correspondante présentée dans cet article est la 3.7. 0. Utilisez simplement pip install -U orjson pour terminer l'installation. Montrons les méthodes courantes dans orjson :
Semblable à la bibliothèque json native, nous pouvons utiliser orjson.dumps() pour sérialiser des objets Python en données JSON. Notez que la légère différence est le résultat de la sérialisation orjson. n'est pas de type str mais de type bytes. Dans l'exemple suivant, nous sérialisons une liste contenant 10 millions d'éléments de dictionnaire simples. La comparaison fastidieuse entre les bibliothèques orjson et json est la suivante :
3. . Options d'options riches
(1) OPT_INDENT_2
En configurant option=orjson.OPT_INDENT_2, nous pouvons ajouter un 2. -effet d'embellissement de l'indentation de l'espace sur le résultat JSON sérialisé, compensant ainsi le manque d'indentation des paramètres :
(2) OPT_OMIT_MICROSECONDS
orjson .dumps() peut convertir directement les objets date et heure dans les bibliothèques standard telles que datetime et l'heure en Python dans les chaînes correspondantes. C'est quelque chose que la bibliothèque json native ne peut pas faire. En configurant option=orjson.OPT_OMIT_MICROSECONDS, les résultats de la conversion peuvent être omis. ) OPT_NON_STR_KEYS
Lorsque l'objet qui doit être sérialisé a une clé non numérique, orjson générera une erreur TypeError par défaut. Dans ce cas, option=orjson.OPT_NON_STR_KEYS doit être configuré pour forcer la conversion de ces clés en type de caractère :
(4) OPT_SERIALIZE_NUMPY
Une caractéristique importante d'orjson est qu'il peut convertir en compatibilité des objets complexes contenant des objets de structure de données dans numpy en tableaux en JSON, avec option=orjson.OPT_SERIALIZE_NUMPY suffit :
( 5) OPT_SERIALIZE_UUID
En plus de sérialiser automatiquement les objets numpy, orjson prend également en charge la conversion des objets UUID. Dans les versions antérieures à orjson 3.0, vous devez coopérer avec option=orjson .OPT_SERIALIZE_UUID, alors que la version 3.X présentée dans cet article nécessite. aucun paramètre de configuration supplémentaire :
(6) OPT_SORT_KEYS
En faisant correspondre le paramètre option=orjson.OPT_SORT_KEYS, les résultats sérialisés peuvent être automatiquement triés par clé :
(7) Combinaison de plusieurs options
Quand votre opération de sérialisation doit impliquer plusieurs fonctions d'option, vous pouvez utiliser l'opérateur | pour combiner plusieurs paramètres d'option :
Lorsque l'objet que vous devez sérialiser implique une structure de données personnalisée de classe de données, vous pouvez coopérer avec orjson.OPT_PASSTHROUGH_DATACLASS, puis transmettre le traitement personnalisé en passant la fonction de paramètre par défaut. pour obtenir une logique de conversion de données plus gratuite. Par exemple, dans l'exemple simple ci-dessous, nous pouvons utiliser cette fonctionnalité pour désensibiliser les données d'origine :
De même, pour les données de type datetime, nous pouvons également coopérer avec OPT_PASSTHROUGH_DATETIME et la fonction par défaut personnalisée. pour implémenter la conversion de format personnalisé de date :
orjson Pour plus de fonctionnalités, veuillez vous rendre sur l'entrepôt officiel https://github.com/ijl/orjson pour en savoir plus.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!