try: import json except ImportError: print("SKIP") raise SystemExit def my_print(o): if isinstance(o, dict): print("sorted dict", sorted(o.items())) else: print(o) my_print(json.loads("null")) my_print(json.loads("false")) my_print(json.loads("true")) my_print(json.loads("1")) my_print(json.loads("-2")) my_print(json.loads('"abc\\u0064e"')) my_print(json.loads("[]")) my_print(json.loads("[null]")) my_print(json.loads("[null,false,true]")) my_print(json.loads(" [ null , false , true ] ")) my_print(json.loads("{}")) my_print(json.loads('{"a":true}')) my_print(json.loads('{"a":null, "b":false, "c":true}')) my_print(json.loads('{"a":[], "b":[1], "c":{"3":4}}')) my_print(json.loads('"abc\\bdef"')) my_print(json.loads('"abc\\fdef"')) my_print(json.loads('"abc\\ndef"')) my_print(json.loads('"abc\\rdef"')) my_print(json.loads('"abc\\tdef"')) my_print(json.loads('"abc\\uabcd"')) # whitespace handling my_print(json.loads('{\n\t"a":[]\r\n, "b":[1], "c":{"3":4} \n\r\t\r\r\r\n}')) # loading nothing should raise exception try: json.loads("") except ValueError: print("ValueError") # string which is not closed try: my_print(json.loads('"abc')) except ValueError: print("ValueError") # unaccompanied closing brace try: my_print(json.loads("]")) except ValueError: print("ValueError") # unspecified object type try: my_print(json.loads("a")) except ValueError: print("ValueError") # bad property name try: my_print(json.loads('{{}:"abc"}')) except ValueError: print("ValueError") # unexpected characters after white space try: my_print(json.loads("[null] a")) except ValueError: print("ValueError")