---
title: Mappatura dei dati in formato JSON Lines
date: 2020-02-24
categories:
  - data-integration
  - database-mapping
  - json
tags:
  - data-mapping
  - database-mapping
  - json-lines
  - json-mapping
  - mapforce
description: Altova MapForce supporta la mappatura dei dati in formato JSON Lines, utilizzandolo sia come sorgente che come destinazione. Ad esempio, è possibile estrarre record da un database e convertirli in formato .jsonl per l'output.
---
Status: #blog

Tags:  #data-mapping #database-mapping #json-lines #json-mapping #mapforce

Categories: [data-integration](/blog/it/category/data-integration.md) | [data-integration](/blog/it/category/data-integration.md) | [json](/blog/it/category/json.md)
# 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/](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.

![](/blog/images/JSON_mapping.jpg)

<!--more-->

MapForce supporta [mappatura, conversione e trasformazione avanzate dei dati](https://www.altova.com/it/mapforce) 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":

[![Tabella del database di origine per la mappatura dei dati in formato JSON Lines](/blog/images/table-design-view.png)](table-design-view.png)

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:

[![Contenuto della tabella del database per la mappatura dei dati in formato JSON Lines](/blog/images/table-contents-1.png)](table-contents-1.png)

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](https://www.altova.com/it/xmlspy-xml-editor#json_editor) Gli strumenti offerti da XMLSpy rappresentano un'ottima soluzione:

[![Esempio di file per la mappatura dei dati in formato JSON Lines](/blog/images/jsonl-instance.png)](jsonl-instance.png)

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:

[![Nuovo design per la mappatura dei dati in formato JSON Lines](/blog/images/new-data-mapping.png)](new-data-mapping.png)

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:

[![Schema JSON con 9 elementi per la mappatura dei dati in formato JSON lines](/blog/images/data-mapping-2.png)](data-mapping-2.png)

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".

[![Collegare la sorgente del database al sistema di output dei dati](/blog/images/data-mapping-3.png)](data-mapping-3.png)

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

[![Gestione dei campi nulli durante la mappatura dei dati in formato JSON](/blog/images/data-mapping-4-1.png)](data-mapping-4-1.png)

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:

[![Creare una funzione personalizzata per gestire i valori nulli](/blog/images/data-mapping-user-funct-1030x381.png)](data-mapping-user-funct.png)

La funzione definita dall'utente incapsula i componenti selezionati, li sostituisce nella mappatura originale e viene aggiunta alla libreria delle funzioni

[![Funzione utente per rilevare i dati mancanti nel database di origine](/blog/images/user-function-def-1.png)](user-function-def-1.png)

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:

[![Associare un valore nullo a una stringa vuota](/blog/images/data-mapping-5a.png)](https://www.altova.com/blog/?attachment_id=4698)

Ecco una rappresentazione grafica della mappatura dei dati completata, con la funzione utente per il rilevamento dei valori nulli:

![Una rappresentazione grafica della mappatura dei dati completata per il formato JSON Lines](/blog/images/data-mapping-complete-1030x870.png)

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

[![Una visualizzazione parziale del file di output in formato .jsonl](/blog/images/output-view.png)](output-view.png)

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.

[![Mappare i dati in formato JSON lines come fonte per una nuova tabella di database](/blog/images/data-mapping-reversed.png)](data-mapping-reversed.png)

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

[![Script SQL generato per mappare i dati in formato JSON a una tabella di un database](/blog/images/SQL-script-ouput.png)](SQL-script-ouput.png)

[Scarica una versione di prova gratuita](https://www.altova.com/it/mapforce/download) 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!
