I need a random object generator in JavaScript that generates a variety of objects with different fields and values. Any ideas where I can find such tool?
I need to generate random objects with various plexity.. My goal is to use JSON in order to serialize these objects and fuzz test my application http api.
I need a random object generator in JavaScript that generates a variety of objects with different fields and values. Any ideas where I can find such tool?
I need to generate random objects with various plexity.. My goal is to use JSON in order to serialize these objects and fuzz test my application http api.
Share Improve this question edited Dec 11, 2013 at 23:39 LJNielsenDk 1,4601 gold badge16 silver badges32 bronze badges asked Mar 14, 2010 at 21:46 GjorgjiGjorgji 23.1k10 gold badges33 silver badges39 bronze badges 3- 5 Um... Write it? Or clarify your needs, because they sound very specific to me. – Ricket Commented Mar 14, 2010 at 21:47
- I need to generate random objects with various plexity.. My goal is to use JSON in order to serialize these objects and fuzz test my application http api. – Gjorgji Commented Mar 14, 2010 at 22:07
- See my answer, it does exactly what you said. – user216441 Commented Mar 14, 2010 at 22:16
3 Answers
Reset to default 10function createRandomObj(fieldCount, allowNested)
{
var generatedObj = {};
for(var i = 0; i < fieldCount; i++) {
var generatedObjField;
switch(randomInt(allowNested ? 6 : 5)) {
case 0:
generatedObjField = randomInt(1000);
break;
case 1:
generatedObjField = Math.random();
break;
case 2:
generatedObjField = Math.random() < 0.5 ? true : false;
break;
case 3:
generatedObjField = randomString(randomInt(4) + 4);
break;
case 4:
generatedObjField = null;
break;
case 5:
generatedObjField = createRandomObj(fieldCount, allowNested);
break;
}
generatedObj[randomString(8)] = generatedObjField;
}
return generatedObj;
}
// helper functions
function randomInt(rightBound)
{
return Math.floor(Math.random() * rightBound);
}
function randomString(size)
{
var alphaChars = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ";
var generatedString = '';
for(var i = 0; i < size; i++) {
generatedString += alphaChars[randomInt(alphaChars.length)];
}
return generatedString;
}
It will create a obj with X paramenters, all with a integer, float, string, boolean or null value.
I just made it :B
You can use hasard library
Random variables and random nested objects manipulation in javascript
const h = require('hasard');
const randomInteger = h.integer({type: 'poisson', lambda: 4});
const randomString = h.string({
size: h.add(randomInteger, 5),
value: h.value('abcdefghijklmnopkrstuvw'.split(''))
});
const randomNumber = h.number([0, 100]);
const randomKeys = h.array({
size: randomInteger,
value: randomString
});
// we first define it, to use it as reference into randomObject
const randomValue = h.value();
const randomObject = h.object(
randomKeys,
randomValue
);
// And we set recursivity by setting his values afterward
randomValue.set([
randomString,
randomObject,
randomNumber,
randomInteger
]);
Results will looks like
[
{
"vbmujvv": "rfigcpcvpj",
"sjmcgvvk": 3,
"efdarehl": {
"odinthsuca": "rwjhmbfus",
"noihjtjen": 27.73332043042913,
"brspkaagb": "lnuiabcfd"
},
"febtungjhfokf": 49.28625818957401,
"eoemrkgi": {
"jkcuwrpsh": "ekjoltm",
"cincs": {
"fcovbwk": {
"whsgmjh": 48.00843935524626,
"agsjflef": 46.700796253998014
},
"ovkdfudgfm": 84.83383163217746,
"fpfetl": "djuvfjbjptf",
"kobmkstj": {
"wskgkkerk": 9,
"kvnptptek": 37.63655947554132,
"dsloun": 4
}
},
"krirwk": {
"sjgftomu": 51.663884142674775,
"hpjgibnli": 4
},
"pkhkgruls": "isuodwjrg"
},
"ortomnue": 71.71303423929236
}
]
DISCLAIMER i'm the author of hasard library
// Array to track used objects if "Unique" is checked
var usedObjects = [];
// Function to get a random object
function getRandomObject() {
if (document.getElementById("uniqueCheckbox").checked) {
// Unique mode - Remove used objects from the list
if (usedObjects.length === objData.length) {
alert("All objects have been used! Resetting the list.");
usedObjects = [];
}
var availableObjects = objData.filter(function(item) {
return !usedObjects.includes(item);
});
var randomIndex = Math.floor(Math.random() * availableObjects.length);
var randomObject = availableObjects[randomIndex];
usedObjects.push(randomObject);
} else {
// Normal mode - No uniqueness enforced
var randomIndex = Math.floor(Math.random() * objData.length);
var randomObject = objData[randomIndex];
}
return randomObject;
}
// Function to display the generated random objects
function generateRandomObjects() {
// Get the number of objects to generate from the input field
var objectCount = parseInt(document.getElementById("objectCount").value);
// Validate the number (should not exceed 1500)
if (isNaN(objectCount) || objectCount < 1 || objectCount > 1500) {
alert("Please enter a valid number between 1 and 1500.");
return;
}
// Generate the specified number of random objects
var result = [];
for (var i = 0; i < objectCount; i++) {
result.push(getRandomObject());
}
// Display the generated random objects
document.getElementById("output").innerHTML = 'Random Object(s):'+ '<span>'+ result + '</span>';
}
// Function to reset the form and clear the output
function resetForm() {
// Clear the output
document.getElementById("output").innerText = "Your random object(s) will appear here...";
// Reset the input field to default value of 1
document.getElementById("objectCount").value = 1;
// Uncheck the unique checkbox
document.getElementById("uniqueCheckbox").checked = false;
// Clear the used objects array
usedObjects = [];
}
var objData = ['Lighthouse', 'Punching bag', 'Chaps', 'Shower cap', 'Cauldron', 'Eggnog', 'Video camera', 'Faucet', 'Beads', 'Necklace', 'Sticker', 'Bow tie', 'Kale', 'Mantle', 'Loaf of bread', 'Blackberry']
Random Object Generator - This is live example