Generare un set di dati JSON fittizio

genera N record JSON corrispondenti a uno schema semplice, a partire da Faker (locale fr_FR o en_US)

A cosa servono i dati fittizi?

Il bisogno torna in tutte le fasi del ciclo di sviluppo. Per una demo, servono utenti plausibili, non un Lorem Ipsum tronco. Per test di integrazione, si vuole un set di dati riproducibile ma vario. Per un ambiente di pre-produzione isolato dal GDPR, si sostituiscono i dati reali con equivalenti fittizi. Per un mockup UI, bisogna popolare tabelle con voci credibili. Il generatore di dati fittizi copre questi casi producendo record JSON conformi a uno schema semplice.

Il formato dello schema

Lo schema è un oggetto JSON dove ogni chiave è il nome del campo prodotto e il valore è un tipo Faker. Per esempio:

{
  "name": "name",
  "email": "email",
  "age": "number 18-65",
  "active": "boolean",
  "registered_on": "date"
}

Lo strumento genera poi N record che rispettano questo schema, nella locale scelta (italiano o inglese). Il risultato è un array JSON utilizzabile direttamente come fixture, come corpo di una richiesta di API, o come input di un seeder di database.

Tipi supportati

  • name: nome completo («Mario Rossi»).
  • firstName / lastName: nome e cognome separati.
  • email: indirizzo email fittizio (usa safeEmail di Faker, che produce domini riservati example.com non raggiungibili).
  • phone: numero di telefono formattato secondo la locale.
  • address: indirizzo postale completo.
  • number: intero casuale tra 0 e 1000 per default, o number a-b per un intervallo personalizzato.
  • boolean: true o false casuale.
  • date: data nel formato ISO 8601 (YYYY-MM-DD).
  • uuid: UUID v4.
  • text: breve paragrafo stile lorem-ipsum (~120 caratteri).
  • string: tre parole casuali.
  • url: URL fittizio (https://example.org/...).

Ogni tipo non riconosciuto viene conservato così com'è nel risultato. È una scelta: se mettete "role": "admin" nello schema, ogni record avrà "role": "admin". Questo permette di mescolare valori costanti e campi dinamici senza cambiare strumento.

Scelta della locale

Faker dispone di decine di locali. Lo strumento espone le due più utili in un contesto italofono:

  • it_IT: nomi italiani, indirizzi italiani, numeri di telefono formato italiano, frasi lorem-ipsum in italiano approssimativo.
  • en_US: nomi e indirizzi americani, numeri di telefono formato US.

Per una coerenza di dimostrazione italiana, scegliete it_IT. Per un test di internazionalizzazione, mescolate le due esecuzioni o aumentate il numero di record per disporre di una varietà di origini.

Casi d'uso

  • Fixture di test: generare 50 utenti, incollarli in un file YAML di AliceBundle o un seeder. Riproducibile fissando un seed Faker, vario altrimenti.
  • Mockup UI: riempire una tabella React/Vue con dati plausibili. Molto più parlante di una tabella vuota o di foo / bar / baz.
  • Carico di test: generare un payload JSON voluminoso per un test di throughput (k6, JMeter, Locust).
  • Demo commerciali: popolare un'istanza di dimostrazione con voci che assomigliano a casi reali ma non rischiano di far trapelare informazioni sensibili.
  • Anonimizzazione: sostituire un export di produzione con un equivalente fittizio prima di condividerlo con un subappaltatore o usarlo in pre-produzione.

Limiti volontari

Per restare semplice da usare, lo strumento non supporta schemi nidificati (un campo che sia esso stesso un oggetto o un array di oggetti). Per tali esigenze, è meglio scrivere uno script Faker dedicato, o comporre più chiamate successive. Il limite volontario evita anche combinazioni assurde ("items": "name" con una cardinalità casuale) che renderebbero lo strumento meno prevedibile.

Il numero di record è limitato a 500. Oltre, ci si aspetta da un ambiente di test che generi le sue fixture tramite codice dedicato (Faker in CLI, Foundry, factory_bot, ecc.). Lo strumento web è utile fino a qualche centinaia di record; oltre, la memoria e il tempo di risposta plafonano l'esperienza.

Riproducibilità e sicurezza

I valori sono prodotti con un PRNG non deterministico: ogni esecuzione produce dati diversi. Per test che devono essere riproducibili (CI), catturate l'output una volta e committatelo. Per dati realmente sensibili (anonimizzazione di produzione), tenete a mente che la generazione lato server pubblico non è il canale giusto: preferite uno script locale che non lasci mai la vostra postazione.

Domande frequenti

Le email generate sono valide?

Il formato è valido (RFC 5322), ma il dominio è example.com o equivalente riservato dall'IANA. Nessuna di queste email può ricevere messaggi; è volontario per evitare spam accidentali su veri indirizzi.

Posso ottenere lo stesso set di dati più volte?

Non tramite l'interfaccia web: lo strumento non fissa un seed. Per una riproducibilità stretta, scriptate la generazione in locale con Faker e un seed fisso ($faker->seed(1234);).

Come generare un oggetto nidificato?

Lo strumento supporta solo uno schema piatto. Per nidificati, post-processate l'output con uno script o scrivete direttamente il codice Faker corrispondente.

Perché i miei numeri sono tutti tra 0 e 1000?

È l'intervallo predefinito. Specificate un intervallo: "age": "number 18-65", "price": "number 1-9999", ecc.

Quali sono i collegamenti con gli altri strumenti del sito?

Per UUID in quantità, vedete il generatore di UUID. Per password, il generatore di password. Per testo, il generatore di testo. Il mock data generator è lo strumento trasversale che combina più di queste generazioni.

Esempio di richiesta

curl -X POST https://cdrn.fr/api/v1/tools/mock-data-generator/execute \
  -H "Content-Type: application/json" \
  -d '{"schema":"{\"name\": \"name\", \"email\": \"email\", \"age\": \"number 18-65\"}","count":5,"locale":"fr_FR"}'

Schema di input

Campo Tipo Richiesto Predefinito
schema text {"name": "name", "email": "email", "age": "number 18-65"}
count integer 5
locale choice (fr_FR, en_US) fr_FR

Endpoint

  • GET https://cdrn.fr/api/v1/tools - elenca tutti gli strumenti disponibili
  • GET https://cdrn.fr/api/v1/tools/mock-data-generator - recupera lo schema di questo strumento
  • POST https://cdrn.fr/api/v1/tools/mock-data-generator/execute - esegue questo strumento con un payload JSON