JSON es la notación de objetos de Java Script. Estos son códigos fuente independientes del idioma que se utilizan para el intercambio de datos y, por lo general, son de naturaleza ligera. Actúa como una alternativa a XML. Estos son generalmente textos que los humanos pueden leer y escribir fácilmente y también es más fácil para las máquinas analizar JSON y generar resultados. JSON se utiliza principalmente para la transmisión de datos entre el servidor y las aplicaciones web. .
En este artículo, aprenderemos cómo podemos comparar objetos JSON independientemente del orden en que existen en Python.
Acercarse:
- Módulo de importación
- Crear strings JSON
- Convertir strings a diccionarios de python
- Ordenar diccionarios
- Comparar
- Imprimir resultado
Varias implementaciones para hacer lo mismo se dan a continuación,
Ejemplo 1: Usando sorted()
Python3
import json # JSON string json_1 = '{"Name":"GFG", "Class": "Website", "Domain":"CS/IT", "CEO":"Sandeep Jain"}' json_2 = '{"CEO":"Sandeep Jain", "Domain":"CS/IT","Name": "GFG","Class": "Website"}' # Converting string into Python dictionaries json_dict1 = json.loads(json_1) json_dict2 = json.loads(json_2) print(sorted(json_dict1.items()) == sorted(json_dict2.items()))
Producción:
True
Ejemplo 2: comparación más compleja
Python3
import json # JSON string json_1 = '{"Name":"GFG", "Class": "Website", "Domain":"CS/IT", "CEO":"Sandeep Jain","Subjects":["DSA","Python","C++","Java"]}' json_2 = '{"CEO":"Sandeep Jain","Subjects":["C++","Python","DSA","Java"], "Domain":"CS/IT","Name": "GFG","Class": "Website"}' # Convert string into Python dictionary json1_dict = json.loads(json_1) json2_dict = json.loads(json_2) print(sorted(json1_dict.items()) == sorted(json2_dict.items())) print(sorted(json1_dict.items())) print(sorted(json2_dict.items()))
Producción:
Falso
[(‘CEO’, ‘Sandeep Jain’), (‘Clase’, ‘Sitio web’), (‘Dominio’, ‘CS/IT’), (‘Nombre’, ‘GFG’), (‘Asuntos’, [ ‘DSA’, ‘Python’, ‘C++’, ‘Java’])]
[(‘CEO’, ‘Sandeep Jain’), (‘Clase’, ‘Sitio web’), (‘Dominio’, ‘CS/IT’), (‘Nombre’, ‘GFG’), (‘Asuntos’, [ ‘C++’, ‘Python’, ‘DSA’, ‘Java’])]
En este caso, obtenemos nuestro resultado como Falso porque el problema con el método ordenado() es que solo funciona en el nivel superior de un diccionario, es decir, en las claves y no en sus valores, como se puede verificar con el código anterior. Entonces, en tales casos, podemos definir una función personalizada nosotros mismos que puede ordenar recursivamente cualquier lista o diccionario (convirtiendo los diccionarios en una lista de pares clave-valor) y, por lo tanto, pueden adaptarse para la comparación. La implementación usando esta alternativa se da a continuación.
Ejemplo:
Python3
import json # JSON string json_1 = '{"Name":"GFG", "Class": "Website", "Domain":"CS/IT", "CEO":"Sandeep Jain","Subjects":["DSA","Python","C++","Java"]}' json_2 = '{"CEO":"Sandeep Jain","Subjects":["C++","Python","DSA","Java"], "Domain":"CS/IT","Name": "GFG","Class": "Website"}' # Convert string into Python dictionary json1_dict = json.loads(json_1) json2_dict = json.loads(json_2) def sorting(item): if isinstance(item, dict): return sorted((key, sorting(values)) for key, values in item.items()) if isinstance(item, list): return sorted(sorting(x) for x in item) else: return item print(sorting(json1_dict) == sorting(json2_dict))
Producción:
True
Publicación traducida automáticamente
Artículo escrito por saurabh48782 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA