<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />Este archivo JSL contiene funciones para convertir JSON texto en una estructura de datos JSL o en una tabla de datos JMP. JSON representa una estructura de "matrices" y "objetos" anidados. Los tipos/valores JSON se representan de la siguiente manera en JSL:
| JSON | JSL | notas |
|---|
| formación | lista | secuencia de valores |
| objeto | matriz asociativa | conjunto de valores con nombre |
| número | número | |
| cadena | cadena | |
| verdadero | 1.0 | |
| FALSO | 0.0 | |
| nulo | . | valor que falta |
Cuando se convierte a una tabla de datos JMP, los nombres representan columnas y los valores de matriz representan filas. Los valores que no son de matriz se rellenan para que coincidan con los valores de matriz.
Funciones principales
Todas las funciones están dentro del espacio de nombres "JSON" para evitar colisiones de nombres con otras funciones.
dt = JSON:Make Table( json text | obj )
obj = JSON:Parse( json text )
Datos de ejemplo
JSON originales
{"region":"Europe",
"country":[
{"name":"France", "population":66.1},
{"name":"Germany", "population":80.8}
]
}
JSL convertido
Associative Array(
{{"country", {
["name" => "France", "population" => 66.1],
["name" => "Germany", "population" => 80.8]
}},
{"region", "Europe"}}
)
Tenga en cuenta que el orden de los elementos del conjunto no se conserva. Él pasa a ser alfabético en JMP.
Se puede acceder a los valores del objeto analizado con subíndices JSL normales. Por ejemplo, si datos contiene el resultado del análisis anterior, puede acceder a él con:
data["country"][1]["name"]; // "France"
Tabla de datos convertidos
| nombre del país | país.población | región |
|---|
| Francia | 66.1 | Europa |
| Alemania | 80.8 | Europa |
Tenga en cuenta que el valor de la región se repite.
Notas de implementación
Informe los problemas a la discusión de Intercambio de archivos o a xan.gregg@jmp.com .
Actualizar : También he adjuntado el de Craige Analizador JSON II.jsl , que es una versión mucho más rápida de JSON Parser.jsl.
Genial: ¡mi análisis de 5 minutos ahora se ha reducido a 1 segundo!
Código inteligente Xan, usar una lista JSL como una pila para lidiar con la estructura JSON anidada es una gran idea.
Análisis rápido de JSON mediante coincidencia de patrones Variación más rápida de su código, aún no bien probado.
Gracias por señalarme la función Insertar, esa fue una pieza importante del rompecabezas.