Skip to content

Instantly share code, notes, and snippets.

@ansh0l
Last active December 27, 2019 10:27
Show Gist options
  • Save ansh0l/468f39c4e4aa36736f3f64382c3f841a to your computer and use it in GitHub Desktop.
Save ansh0l/468f39c4e4aa36736f3f64382c3f841a to your computer and use it in GitHub Desktop.
Random Json Generator
import datetime
import json
import random
import string
class date(str):
pass
def key_generator(wt_int=10, wt_str=10, wt_dict=0, wt_list=0, wt_float=10, wt_date=3, wt_none=1):
return element_generator(wt_int, wt_str, wt_dict, wt_list, wt_float, wt_date, wt_none)
def element_generator(wt_int=10, wt_str=10, wt_dict=5, wt_list=3, wt_float=9, wt_date=3, wt_none=1):
possible_value = random.choice([int]*wt_int + [str]*wt_str + [dict]*wt_dict + [list]*wt_list + [float]*wt_float + [date]*wt_date + [None]*wt_none)
return {
int: random_int,
str: random_string,
dict: random_dict,
list: random_list,
date: random_date,
float: random_float,
None: lambda: None
}[possible_value]()
def random_string(maximum_alphabet_multiplier=5, minimum_length=10, maximum_length=150):
characters = list((string.ascii_letters + """ ,.'"`-*&%_ """ + string.digits)*random.randint(1, maximum_alphabet_multiplier))
random.shuffle(characters)
return ''.join(x for x in characters[:random.randint(minimum_length, maximum_length)])
def random_date(seconds_range=1000000000):
return str(datetime.datetime.now()
- datetime.timedelta(seconds=random.randint(1,seconds_range))
+ datetime.timedelta(seconds=random.randint(1,seconds_range)))
def random_float(float_range=1000000000):
return random.random()*random.randint(1, float_range)
def random_int(int_range=1000000000):
return random.randint(1,int_range)
def random_list(minimum_elements=10, maximum_elements=100, nested=True):
return [element_generator() for _ in range(random.randint(0, minimum_elements))] if nested \
else [element_generator() for _ in range(random.randint(minimum_elements, maximum_elements))]
def random_dict(minimum_elements=10, maximum_elements=100, nested=True):
return {key_generator(): element_generator() for _ in range(random.randint(0, minimum_elements))} if nested \
else {key_generator(): element_generator() for _ in range(random.randint(minimum_elements, maximum_elements))}
def random_data(minimum_elements=50):
return [element_generator() for _ in range(minimum_elements)]
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment