<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />Questo file JSL contiene funzioni per la conversione JSON testo in una struttura dati JSL o in una tabella dati JMP. JSON rappresenta una struttura di "array" e "oggetti" nidificati. I tipi/valori JSON sono rappresentati come segue in JSL:
| JSON | JSL | Appunti |
|---|
| vettore | elenco | sequenza di valori |
| oggetto | matrice associativa | insieme di valori denominati |
| numero | numero | |
| corda | corda | |
| VERO | 1.0 | |
| falso | 0.0 | |
| nullo | . | valore mancante |
Quando vengono convertiti in una tabella dati JMP, i nomi rappresentano le colonne ei valori dell'array rappresentano le righe. I valori non di matrice vengono compilati per corrispondere ai valori di matrice.
Funzioni principali
Tutte le funzioni si trovano all'interno dello spazio dei nomi "JSON" per evitare collisioni di nomi altre funzioni.
dt = JSON:Make Table( json text | obj )
obj = JSON:Parse( json text )
Dati di esempio
JSON originale
{"region":"Europe",
"country":[
{"name":"France", "population":66.1},
{"name":"Germany", "population":80.8}
]
}
JSL convertito
Associative Array(
{{"country", {
["name" => "France", "population" => 66.1],
["name" => "Germany", "population" => 80.8]
}},
{"region", "Europe"}}
)
Si noti che l'ordine degli elementi dell'insieme non viene mantenuto. Esso diventa alfabetico in JMP.
È possibile accedere ai valori dell'oggetto analizzato con la normale sottoscrizione JSL. Ad esempio, se dati contiene il risultato dell'analisi sopra, puoi accedervi con:
data["country"][1]["name"]; // "France"
Tabella dati convertiti
| nome del paese | nazione.popolazione | regione |
|---|
| Francia | 66.1 | Europa |
| Germania | 80.8 | Europa |
Si noti che il valore della regione viene ripetuto.
Note di attuazione
Si prega di segnalare i problemi alla discussione sullo scambio di file o a xan.gregg@jmp.com .
Aggiornamento : Ho allegato anche quello di Craige JSON Parser II.jsl , che è una versione molto più veloce di JSON Parser.jsl.
Fantastico: la mia analisi di 5 minuti è ora ridotta a 1 secondo!
Codice intelligente Xan, utilizzare un elenco JSL come stack per gestire la struttura JSON nidificata è un'ottima idea.
Analisi veloce di JSON utilizzando Pattern Matching Variazione più veloce del tuo codice, ancora non ben testata.
Grazie per avermi indicato la funzione Inserisci, che era un pezzo importante del puzzle.