-
Notifications
You must be signed in to change notification settings - Fork 1
/
random_json
executable file
·48 lines (42 loc) · 1.31 KB
/
random_json
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
#!/usr/bin/env python
import json
import random
import sys
# Created by _Vi in 2013; License: MIT or 2-clause BSD.
maxlev = 3
if len(sys.argv)>1: maxlev = int(sys.argv[1])
def random_string():
l = random.choice(range(0,8))
s = ""
for i in range(0,l):
s += random.choice(["a", "1", "0", ".", "-", "+", "_", "false", "true", "/", "=", "\\", "e", "{", "}", "[", "]", ",", "\r", "\n", "\n", " ", "\t"])
return s
def random_hierarchy(maxlevel):
typeslist = []
typeslist += [list, dict]*maxlevel
typeslist += [int, float, str, None]
ty = random.choice(typeslist)
if ty == int:
return random.randint(-100,100)
elif ty == float:
return -200+100*random.random()
elif ty == str:
return random_string()
elif ty == None:
return None
elif ty == list:
l = random.choice([maxlevel-1,maxlevel-1,maxlevel]+list(range(0,4)))
li = []
for i in range(0,l):
li += [random_hierarchy(maxlevel-1)]
return li
elif ty == dict:
l = random.choice([maxlevel-1,maxlevel-1,maxlevel]+list(range(0,3)))
di = {}
for i in range(0,l):
k = random_string()
v = random_hierarchy(maxlevel-1)
di[k]=v
return di
json.dump(random_hierarchy(maxlev), sys.stdout)
print("")