JSON (Notación de objetos de JavaScript) es un formato de intercambio de datos que es texto legible por humanos y se utiliza para transmitir datos, especialmente entre aplicaciones web y servidores. Los archivos JSON serán como diccionarios anidados en Python. Para convertir un archivo de texto en JSON, hay un json
módulo en Python. Este módulo viene integrado con los módulos estándar de Python, por lo que no es necesario instalarlo externamente.
Un json plano no es nada, pero no hay anidamiento y solo están presentes los pares clave-valor.
Ejemplo:
JSON sin aplanar:
{‘usuario’:{‘Rachel’:{‘UserID’:1717171717,
‘Correo electrónico’: ‘rachel1999@gmail.com’,
‘amigos’: [‘John’, ‘Jeremy’, ‘Emily’]} }}JSON simplificado:
{‘user_Rachel_friends_2’: ‘Emily’, ‘user_Rachel_friends_0’: ‘John’, ‘user_Rachel_UserID’: 1717171717, ‘user_Rachel_Email’: ‘rachel1999@gmail.com’, ‘user_Rachel_friends_1’: ‘Jeremy’}
Necesidad de aplanar JSON
Hay muchas razones para la necesidad de aplanar JSON, como una vista mejor y comprensible de que solo hay pares clave-valor presentes sin anidamiento. También permite que la seguridad y las restricciones específicas del contexto se implementen de una manera legible, pero más detallada.
Enfoque para aplanar JSON
Hay muchas formas de aplanar JSON. Hay una forma recursiva y otra mediante el uso de la json-flatten
biblioteca.
- Enfoque recursivo: Ahora podemos aplanar la array del diccionario mediante un enfoque recursivo que es bastante fácil de entender. El enfoque recursivo es un poco más lento que usar
- Uso de la biblioteca flatten_json: la biblioteca json-flatten proporciona funciones para aplanar un objeto JSON en un solo par clave-valor y desacoplar ese diccionario de nuevo a un objeto JSON.
Instalando biblioteca
Para usar la biblioteca flatten_json, necesitamos instalar esta biblioteca. flatten_json se puede instalar ejecutando el siguiente comando en la terminal.
pip install json-flatten
Ejemplo:
from
flatten_json
import
flatten
unflat_json
=
{
'user'
:
{
'Rachel'
:
{
'UserID'
:
1717171717
,
'Email'
:
'rachel1999@gmail.com'
,
'friends'
: [
'John'
,
'Jeremy'
,
'Emily'
]
}
}
}
flat_json
=
flatten(unflat_json)
print
(flat_json)
Producción :
{‘user_Rachel_UserID’: 1717171717, ‘user_Rachel_Email’: ‘rachel1999@gmail.com’, ‘user_Rachel_friends_0’: ‘John’, ‘user_Rachel_friends_1’: ‘Jeremy’, ‘user_Rachel_friends_2’: ‘Emily’}
json-flatten
la biblioteca.
Ejemplo:
# for a array value of a key unflat_json = { 'user' : { 'Rachel' : { 'UserID' : 1717171717 , 'Email' : 'rachel1999@gmail.com' , 'friends' : [ 'John' , 'Jeremy' , 'Emily' ] } } } # Function for flattening # json def flatten_json(y): out = {} def flatten(x, name = ''): # If the Nested key-value # pair is of dict type if type (x) is dict : for a in x: flatten(x[a], name + a + '_' ) # If the Nested key-value # pair is of list type elif type (x) is list : i = 0 for a in x: flatten(a, name + str (i) + '_' ) i + = 1 else : out[name[: - 1 ]] = x flatten(y) return out # Driver code print (flatten_json(unflat_json)) |
Producción :
{‘user_Rachel_friends_2’: ‘Emily’, ‘user_Rachel_friends_0’: ‘John’, ‘user_Rachel_UserID’: 1717171717, ‘user_Rachel_Email’: ‘rachel1999@gmail.com’, ‘user_Rachel_friends_1’: ‘Jeremy’}
Publicación traducida automáticamente
Artículo escrito por RahulSabharwal y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA