How to Compare JSON Objects Regardless of Order in Python?

JSON (JavaScript Object Notation) is a widely used data format for exchanging data on the web. In Python, comparing JSON objects can be challenging when they contain the same elements but in different orders. This article explores three effective methods for comparing JSON objects regardless of their order.

Method 1: Converting JSON to Dictionaries

The simplest approach is converting JSON strings to Python dictionaries and comparing them directly. Since dictionaries are unordered in Python, this method naturally handles order differences ?

import json

# JSON objects to compare
json_obj1 = '{"name": "John", "age": 30, "city": "New York"}'
json_obj2 = '{"age": 30, "city": "New York", "name": "John"}'

# Convert JSON objects to dictionaries
dict1 = json.loads(json_obj1)
dict2 = json.loads(json_obj2)

# Compare dictionaries
if dict1 == dict2:
    print("The JSON objects are equal.")
else:
    print("The JSON objects are not equal.")

print(f"Dict 1: {dict1}")
print(f"Dict 2: {dict2}")
The JSON objects are equal.
Dict 1: {'name': 'John', 'age': 30, 'city': 'New York'}
Dict 2: {'age': 30, 'city': 'New York', 'name': 'John'}

This method works well for simple JSON objects with basic data types and is the most efficient approach for straightforward comparisons.

Method 2: Sorting JSON Keys

Another approach involves sorting the JSON keys before comparison. This creates a canonical representation that can be compared as strings ?

import json

# JSON objects to compare
json_obj1 = '{"name": "John", "age": 30, "city": "New York"}'
json_obj2 = '{"age": 30, "city": "New York", "name": "John"}'

# Sort JSON objects by keys
sorted_json_obj1 = json.dumps(json.loads(json_obj1), sort_keys=True)
sorted_json_obj2 = json.dumps(json.loads(json_obj2), sort_keys=True)

# Compare sorted JSON strings
if sorted_json_obj1 == sorted_json_obj2:
    print("The JSON objects are equal.")
else:
    print("The JSON objects are not equal.")

print(f"Sorted JSON 1: {sorted_json_obj1}")
print(f"Sorted JSON 2: {sorted_json_obj2}")
The JSON objects are equal.
Sorted JSON 1: {"age": 30, "city": "New York", "name": "John"}
Sorted JSON 2: {"age": 30, "city": "New York", "name": "John"}

This method ensures consistent key ordering and works well for nested objects, though it can be computationally expensive for large JSON structures.

Method 3: Using Deep Comparison with Nested Objects

For complex JSON with nested structures, a recursive comparison function provides more control ?

import json

def deep_compare_json(obj1, obj2):
    """Recursively compare JSON objects regardless of order"""
    if type(obj1) != type(obj2):
        return False
    
    if isinstance(obj1, dict):
        if set(obj1.keys()) != set(obj2.keys()):
            return False
        return all(deep_compare_json(obj1[key], obj2[key]) for key in obj1)
    
    elif isinstance(obj1, list):
        if len(obj1) != len(obj2):
            return False
        # For lists, we assume order matters unless you want to sort them
        return all(deep_compare_json(obj1[i], obj2[i]) for i in range(len(obj1)))
    
    else:
        return obj1 == obj2

# Test with nested JSON
json_obj1 = '{"user": {"name": "John", "details": {"age": 30, "city": "New York"}}, "status": "active"}'
json_obj2 = '{"status": "active", "user": {"details": {"city": "New York", "age": 30}, "name": "John"}}'

dict1 = json.loads(json_obj1)
dict2 = json.loads(json_obj2)

if deep_compare_json(dict1, dict2):
    print("The nested JSON objects are equal.")
else:
    print("The nested JSON objects are not equal.")
The nested JSON objects are equal.

Comparison of Methods

Method Best For Performance Complexity
Dictionary Conversion Simple JSON objects Fast Low
Sorting Keys String comparison needed Medium Medium
Deep Comparison Complex nested structures Slower High

Conclusion

For most cases, converting JSON to dictionaries and using Python's built-in equality operator is the simplest and most efficient solution. Use sorting when you need string representations, and implement deep comparison for complex nested structures with specific requirements.

Updated on: 2026-03-27T09:06:45+05:30

13K+ Views

Kickstart Your Career

Get certified by completing the course

Get Started
Advertisements