Xan publicó muy bien código para leer datos JSON en JMP.Xan notó que JSL estaba cargando archivos JSON grandes con lentitud; aquí hay un vistazo a algunos JSL de reemplazo para hacerlo más rápido.(JSON es más adecuado para objetos pequeños, pero si debe cargar 100K o más, esto ayudará).
El código original de Xan tiene una rutina de análisis para leer la cadena JSON un carácter a la vez:

La variable posición camina a lo largo de la cuerda, para fin , un carácter a la vez.La verdadera magia en el código de Xan está en el manejo de los caracteres [, ], {, }.Acabo de copiar las partes mágicas en el código de reemplazo.Arriba, puede ver el manejo de comillas, dos puntos, t, f.Esos caracteres dirigen el manejo del analizador de los caracteres subsiguientes.
El comparador de patrones de JMP es una mejor opción para este trabajo.El siguiente JSL es una coincidencia de patrón único que procesa la cadena completa de principio a fin.A medida que se empareja cada fragmento, algún JSL incrustado en la coincidencia maneja el fragmento.
Fragmento del código de reemplazo (¡no copie esto!Mejor código en archivo adjunto):

La función de análisis de reemplazo ahora tiene solo 5 líneas, pero el código de la función de análisis original ahora está en PatrónParse , que parece bastante complicado a primera vista.Pero en realidad se trata de la misma lógica que en el original (la magia se copia casi ¡exactamente!) PatrónParse empieza con PatPos (0) y termina con PatRPos (0) que obligan al patrón a coincidir con todo.El código original tenía un bucle while.PatrónParse tiene PatRepetir en cambio.PatRepetir está repitiendo una concatenación (+) de tres operaciones: (1) PatPos (sin argumento) registra la posición actual del carácter en errores para que Parse pueda decir algo útil si los datos JSON son ininteligibles.(2) PatFence acelera el partido diciéndole al comparador que todo hasta la cerca es correcto y no debe ser revisado.(3) La lista de alternativas entre paréntesis ( | ) es donde ocurre la diversión; saltar espacios en blanco, hacer coincidir un nombre, hacer coincidir dos puntos, etc. Nombre del patrón y Número de patrón (no se muestra) están en el archivo adjunto y hacen lo que suponga.
La última pieza del rompecabezas es PatTest .PatTest evalúa su argumento a 0 o 1; si es 1, la prueba tiene éxito, no coincide ningún carácter y la coincidencia continúa.(Si falla con un 0, entonces el comparador retrocede y prueba alternativas, pero eso nunca sucede aquí: aviso cada PatTest termina con ;1 para el valor de retorno.) En este programa, PatTest se usa para inyectar algo de JSL en medio de una partida, no para probar nada.
Con estos cambios y un cambio sugerido por Xan para reemplazar una inserción lenta al final de una lista con una inserción rápida al principio de una lista, JMP carga 180 MB de datos JSON en 90 segundos (frente a 0,25 MB en 5 minutos), una mejora de 1000X.Mejor, tal vez, ya que ahora podría ser lineal con el tamaño del archivo.

El código adjunto no está bien probado, publique una nota si funciona para usted, ¡gracias!
Si se encuentra aquí: esto fue antes de que JMP tuviera un buen análisis integrado de JSON (y XML). Este ejemplo sigue siendo un gran ejemplo de cómo puede usar la coincidencia de patrones de JMP de manera eficiente.
El asistente incorporado para la importación de JSON y XML probablemente supere este código y lo ayude a crear una tabla de datos con los datos que necesita.