Skip to content

Instantly share code, notes, and snippets.

@pstaender
Created February 10, 2023 15:02
Show Gist options
  • Save pstaender/1be92d3e060be7b8e1b87462dab2546e to your computer and use it in GitHub Desktop.
Save pstaender/1be92d3e060be7b8e1b87462dab2546e to your computer and use it in GitHub Desktop.
Usage: node simple_json_anonymizer.mjs data.json > anonymized.json
import { faker } from '@faker-js/faker/locale/de';
import {readFile} from 'node:fs/promises';
// https://fakerjs.dev/api/
let fields = [
[
/email/i, faker.internet.email,
],
[
/nachname/i, faker.name.lastName,
],
[
/vorname/i, faker.name.firstName
],
[
/strasse/i, faker.address.street
],
[
/telefon/i, faker.phone.number
]
];
function anonymize(data, fields) {
if (data.constructor === Array) {
return data.map(d => anonymize(d, fields));
}
for (let k in data) {
if (data[k].constructor === Object || data[k].constructor === Array) {
data[k] = (data[k], fields);
continue;
}
fields.forEach(definition => {
if (definition[0].test(k)) {
data[k] = definition[1]();
}
})
}
return data;
}
let data = JSON.parse((await readFile(process.argv.at(-1))).toString())
data = anonymize(data, fields);
console.log(JSON.stringify(data, null, ' '))
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment