Mappatura dei dati in formato JSON Lines
Il formato dati JSON continua ad evolversi come standard aperto, in quanto viene applicato in modo creativo a nuove esigenze di scambio dati. JSON Lines, definito all'indirizzo http://jsonlines.org/, è un formato di testo comodo per l'archiviazione di dati strutturati, in cui ogni record è rappresentato da una singola riga e costituisce un oggetto JSON valido. JSON Lines gestisce i dati tabellari e identifica chiaramente i tipi di dati senza ambiguità. Questo permette di elaborare i record uno alla volta, il che rende questo formato molto utile per l'esportazione e la trasmissione dei dati.
Altova MapForce supporta la mappatura dei dati in formato JSON Lines, utilizzandolo sia come sorgente dati che come destinazione. Esaminiamo un progetto di mappatura per estrarre record da una tabella di un database e convertirli in un file JSON Lines come output.

MapForce supporta mappatura, conversione e trasformazione avanzate dei dati tra tutti i formati di dati più diffusi e i database relazionali. Per questo esempio, supponiamo di dover creare un file JSON Lines che contenga le informazioni memorizzate in una tabella di un database, originariamente creata per un'applicazione di sondaggi mobile. La tabella "Cars" fa parte di un database che contiene nomi e specifiche di modelli di automobili di una vasta gamma di produttori.
Utilizzo di JSON Lines come formato di output per la mappatura dei dati
La nostra strategia per completare questo compito di mappatura dei dati in formato JSON Lines è semplice: esaminiamo la tabella del database esistente, creiamo un piccolo file di esempio per rappresentare i dati in formato JSON Lines, mappiamo le colonne della tabella del database agli elementi corrispondenti nell'output JSON Lines utilizzando un progetto di mappatura in MapForce, e quindi, semplicemente, clicchiamo sul pulsante "Output di MapForce" per elaborare automaticamente l'intera tabella e generare il file di output.
Utilizzeremo strumenti del pacchetto Altova MissionKit per completare ogni fase del processo. Inizieremo aprendo il database con DatabaseSpy e visualizzando la tabella "Cars" nella vista "Table Designer":

La tabella contiene 9 colonne che corrispondono a tipi di dati stringa e numerici in formato JSON, anche se diverse colonne possono contenere valori nulli. La finestra a sinistra mostra il numero di 6.266 righe di dati. Possiamo utilizzare il menu contestuale che si apre con il tasto destro del mouse per visualizzare le prime 200 righe e analizzare i dati:

Le righe 6 e 7 rivelano che alcune righe contengono effettivamente dati nulli. Ora che comprendiamo la struttura dei dati di origine, possiamo creare un piccolo file di esempio per rappresentare la struttura dei dati in un'unica riga JSON Funzionalità di modifica dei file JSON Gli strumenti offerti da XMLSpy rappresentano un'ottima soluzione:

Il nostro input JSON è codificato a colori in XMLSpy e possiamo verificare che il file sia ben formattato. Si noti che abbiamo salvato il file con l'estensione .jsonl per indicare che si tratta di un file JSON Lines.
Successivamente, apriremo una nuova mappatura dati in MapForce e importeremo la tabella del database e il file di istanze .jsonl:

Quando abbiamo caricato il file .jsonl contenente i dati, MapForce ha creato automaticamente uno schema JSON che descrive i possibili tipi di dati per ogni elemento nell'array che rappresenta i nostri dati. Lo schema predefinito descrive solo un elemento, ma possiamo selezionarlo e utilizzare il menu contestuale per aggiungere duplicati, creando così 8 elementi aggiuntivi:

Successivamente, colleghiamo le colonne del database ai tipi di dati appropriati per ogni elemento nell'array JSON, e colleghiamo anche la tabella "Cars" al primo elemento all'inizio dello schema JSON. Questo indica alla mappatura di creare una nuova riga di output per ogni riga presente nella tabella "Cars".

Potremmo cliccare sul pulsante "Output" nella parte inferiore della finestra di mappatura per convertire l'intera tabella e visualizzare l'anteprima dei risultati, ad eccezione di una complicazione: non abbiamo considerato i valori nulli. Se salvassimo il file di output in questo momento, tutti i valori nulli presenti nel database verrebbero completamente ignorati, lasciando righe nel file JSON Lines con meno di 9 campi. Queste righe sarebbero impossibili da interpretare correttamente nelle successive elaborazioni.
Mappatura dei dati in formato JSON Lines con valori null
MapForce include un filtro che possiamo utilizzare per identificare e gestire i campi vuoti

Un singolo elemento all'interno dell'array JSON non può essere contemporaneamente un numero e un valore nullo. Il filtro e i componenti correlati indicano che i dati nulli nella colonna "Cylinder" verranno mappati al tipo di dato nullo nell'elemento numero 4. Se il valore non è nullo, verrà mappato al tipo di dato numerico. Possiamo utilizzare questa stessa struttura di filtro per tutte le altre colonne che possono contenere valori nulli.
MapForce include una funzionalità che permette di creare funzioni personalizzate, consentendo di salvare la struttura del filtro e riutilizzarla in questa mappatura, nonché in altre mappature di dati JSON che includono valori null. Basta selezionare il filtro e i componenti associati, quindi scegliere "Crea funzione definita dall'utente" dal menu principale delle funzioni:

La funzione definita dall'utente incapsula i componenti selezionati, li sostituisce nella mappatura originale e viene aggiunta alla libreria delle funzioni

Possiamo semplicemente trascinare la funzione utente dalla libreria e collegarla alle altre colonne del database che possono contenere valori nulli.
A volte, quando si mappa dati in formato JSON, può essere preferibile mappare un valore testuale nullo a una stringa vuota. MapForce può gestire questa esigenza grazie a una funzione di sostituzione dei valori mancanti. Nell'immagine sottostante, un valore testuale nullo nell'ultima colonna del database viene mappato a una stringa vuota:

Ecco una rappresentazione grafica della mappatura dei dati completata, con la funzione utente per il rilevamento dei valori nulli:

Notare la funzione utente "null-detector" evidenziata nella finestra "Librerie" a sinistra.
Una volta considerati tutti i possibili valori nulli, possiamo cliccare sul pulsante "Output" per generare il file di output in formato .jsonl

Si noti che la riga 1675 e altre righe contengono sia un valore nullo che una stringa vuota, mentre le righe 1690-1691 sono completamente popolate con dati.
Per una trasformazione una tantum, questo file di output può essere salvato immediatamente. Se il database viene aggiornato continuamente e necessita di essere trasformato nuovamente in futuro, possiamo salvare la mappatura come un file di esecuzione per MapForce Server, per un processo automatizzato con MapForce Server, oppure possiamo distribuirlo direttamente su FlowForce Server.
Mappatura dei dati: file JSON Lines come sorgente
Il seguente schema di mappatura illustra come trasferire un set di dati simile da un file sorgente .jsonl a una tabella di un database.

Per rendere questa versione più chiara, abbiamo modificato lo schema JSON in XMLSpy, aggiungendo descrizioni ed eliminando i tipi di dati non validi per ogni elemento dell'array. Cliccando sul pulsante "Output" per questa mappatura, verrà generato uno script SQL per caricare i dati nella tabella del database.
Si noti che nessuno degli elementi nulli richiede una connessione diretta dalla sorgente alla destinazione. Qualsiasi valore nullo necessario viene inserito automaticamente nella tabella del database, come si può vedere nella riga 18

Scarica una versione di prova gratuita che include tutorial, assistenza e numerosi esempi per iniziare il tuo progetto di mappatura dati in formato JSON Lines o per altre esigenze di mappatura, conversione e trasformazione dei dati!