haiv icon

Detect duplicate keys in JSON

haiv | PRO | 10/01/14 08:41:12 PM UTC | 0 ⭐ | 582 👁️ | Never ⏰ | []
Python |

710 B

|

None

|

0 👍

/

0 👎

import json
import collections
 
json_string = """
{
    "a": 1,
    "a": 2,
    "b": [1,2,3],
    "b": "foo",
    "c": {"x":1, "y":2, "z":3, "a":4}
}
"""
 
def detect_duplicate_keys(list_of_pairs):
    key_count = collections.Counter(k for k,v in list_of_pairs)
    duplicate_keys = ', '.join(k for k,v in key_count.items() if v>1)
 
    if len(duplicate_keys) != 0:
        raise ValueError('Duplicate key(s) found: {}'.format(duplicate_keys))
 
def validate_data(list_of_pairs):
    detect_duplicate_keys(list_of_pairs)
    # More dectection, each of them will raise exception upon invalid
    # data
    return list_of_pairs
 
 
obj = json.loads(json_string, object_pairs_hook=validate_data)
print obj

Comments