La biblioteca JSON de terceros que más vale la pena aprender en Python

1. Introducción

En nuestro uso diario Python, solemos utilizar jsonformatos para almacenar algunos datos, sobre todo en webdesarrollo. Sin embargo, Pythonla biblioteca nativa jsontiene un rendimiento deficiente y pocas funciones, y solo puede hacer frente a jsonlos requisitos de conversión de almacenamiento de datos simples y livianos.

jsonEn este artículo, la biblioteca de terceros que quiero presentarles orjson, en las pruebas de rendimiento comparativas públicas, tiene de varias a docenas de veces las ventajas de rendimiento de rolling json, y otras bibliotecas, y tiene ujsonmuchas funciones adicionales. vamos a echar un vistazo a sus métodos comunes ~rapidjsonsimplejsonPython

2 métodos comunes de orjson

orjsonEs compatible con 3.7todas 3.10las versiones de 64 bits . La versión Pythoncorrespondiente que se muestra en este artículo es y la instalación se puede completar usándola directamente . Demostremos los métodos comúnmente utilizados en:orjson3.7.0pip install -U orjsonorjson

2.1 Serialización

Similar a la jsonbiblioteca nativa, podemos usar orjson.dumps()la serialización Pythonde objetos en JSONdatos. Tenga en cuenta que la pequeña diferencia es que orjsonel resultado de la serialización no es strun tipo sino bytesun tipo. En el siguiente ejemplo, tenemos un diccionario simple que contiene 10 millones de elementos. La lista está serializado, y la comparación orjsoncon jsonla biblioteca, que requiere mucho tiempo, es la siguiente:

2.2 Deserialización

El proceso de convertir JSONdatos en Pythonobjetos se denomina deserialización, que se utiliza orjson.loads()para operar, aceptar bytes, strtipo y otros tipos comunes. Basado en el ejemplo anterior, agregamos un ejemplo de deserialización:

2.3 Opciones de opciones ricas

En orjsonla operación de serialización, optionmuchas funciones adicionales se pueden configurar a través de parámetros, comúnmente utilizados son:

  • OPT_INDENT_2

A través de la configuración , podemos agregar un efecto de embellecimiento de sangría de 2 espacios option=orjson.OPT_INDENT_2al resultado serializado para compensar su falta de parámetros:JSONindent

  • OPT_OMIT_MICROSECONDS

orjson.dumps()Puede convertir directamente los objetos de fecha y hora en bibliotecas estándar como PythonZhong datetimey otras en cadenas correspondientes, lo que no se puede hacer con timebibliotecas nativas Sin embargo, a través de la configuración , puede omitir la parte de milisegundos del sufijo del resultado de la conversión:jsonoption=orjson.OPT_OMIT_MICROSECONDS

  • OPT_NON_STR_KEYS

Cuando hay claves no numéricas en el objeto que debe serializarse, orjsonse generará TypeErrorun error de forma predeterminada. En este momento, se requiere configuración option=orjson.OPT_NON_STR_KEYSpara forzar que estas claves se conviertan en tipos de caracteres:

  • OPT_SERIALIZE_NUMPY

orjsonUna de las características importantes de es que puede numpyconvertir objetos complejos que contienen objetos de estructura de datos en JSONmatrices en Compatibilidad, option=orjson.OPT_SERIALIZE_NUMPYsolo coopere:

  • OPT_SERIALIZE_UUID

Además de serializar numpyobjetos automáticamente, orjsontambién admite UUIDla conversión de objetos. En orjson 3.0versiones anteriores, se requería cooperación option=orjson.OPT_SERIALIZE_UUID, pero 3.Xla versión que se muestra en este artículo no requiere parámetros de configuración adicionales:

  • OPT_SORT_KEYS

Al cooperar con los parámetros option=orjson.OPT_SORT_KEYS, los resultados serializados se pueden ordenar automáticamente por clave:

  • Combinando múltiples opciones

Cuando su operación de serialización necesita involucrar múltiples optionfunciones, puede usar |operadores para combinar múltiples optionparámetros:

2.4 Agregar estrategias de procesamiento personalizadas para clase de datos y fecha y hora

Cuando necesite serializar objetos que involucran dataclassestructuras de datos personalizadas, puede cooperar orjson.OPT_PASSTHROUGH_DATACLASSy luego pasar funciones de procesamiento personalizadas a defaultparámetros para lograr una lógica de conversión de datos más libre. Por ejemplo, en el siguiente ejemplo simple, podemos usar Esta función insensibiliza los datos sin procesar :

Del mismo modo, para datetimelos datos de tipo, también podemos cooperar OPT_PASSTHROUGH_DATETIMEcon defaultfunciones personalizadas para realizar la conversión de formato personalizado de fecha:

orjsonPara obtener más funciones, vaya al almacén oficial https://github.com/ijl/orjsonpara obtener más información ~

Supongo que te gusta

Origin blog.csdn.net/y1282037271/article/details/129200404
Recomendado
Clasificación