type_names(raw) that parses a JSON array and returns the Python type name (type(x).__name__) of each element — demonstrating the mapping: JSON null→NoneType, true→bool, 1→int, 1.5→float, string→str, array→list, object→dict.type_names('[null, true, 1, 1.5, "x", [], {}]')['NoneType', 'bool', 'int', 'float', 'str', 'list', 'dict']
Each JSON type lands on its Python counterpart.
One comprehension over the parsed list.
No special-casing — the mapping is automatic.