1try:
2    import ujson as json
3except ImportError:
4    try:
5        import json
6    except ImportError:
7        print("SKIP")
8        raise SystemExit
9
10
11def my_print(o):
12    if isinstance(o, dict):
13        print("sorted dict", sorted(o.items()))
14    else:
15        print(o)
16
17
18my_print(json.loads("null"))
19my_print(json.loads("false"))
20my_print(json.loads("true"))
21my_print(json.loads("1"))
22my_print(json.loads("-2"))
23my_print(json.loads('"abc\\u0064e"'))
24my_print(json.loads("[]"))
25my_print(json.loads("[null]"))
26my_print(json.loads("[null,false,true]"))
27my_print(json.loads(" [ null , false , true ] "))
28my_print(json.loads("{}"))
29my_print(json.loads('{"a":true}'))
30my_print(json.loads('{"a":null, "b":false, "c":true}'))
31my_print(json.loads('{"a":[], "b":[1], "c":{"3":4}}'))
32my_print(json.loads('"abc\\bdef"'))
33my_print(json.loads('"abc\\fdef"'))
34my_print(json.loads('"abc\\ndef"'))
35my_print(json.loads('"abc\\rdef"'))
36my_print(json.loads('"abc\\tdef"'))
37my_print(json.loads('"abc\\uabcd"'))
38
39# whitespace handling
40my_print(json.loads('{\n\t"a":[]\r\n, "b":[1], "c":{"3":4}     \n\r\t\r\r\r\n}'))
41
42# loading nothing should raise exception
43try:
44    json.loads("")
45except ValueError:
46    print("ValueError")
47
48# string which is not closed
49try:
50    my_print(json.loads('"abc'))
51except ValueError:
52    print("ValueError")
53
54# unaccompanied closing brace
55try:
56    my_print(json.loads("]"))
57except ValueError:
58    print("ValueError")
59
60# unspecified object type
61try:
62    my_print(json.loads("a"))
63except ValueError:
64    print("ValueError")
65
66# bad property name
67try:
68    my_print(json.loads('{{}:"abc"}'))
69except ValueError:
70    print("ValueError")
71
72# unexpected characters after white space
73try:
74    my_print(json.loads("[null]   a"))
75except ValueError:
76    print("ValueError")
77