Actualmente estoy desarrollando una aplicación web y estoy usando JSON para solicitudes y respuestas ajax. Tengo un área donde devuelvo un conjunto de datos muy grande al cliente en forma de una matriz de más de 10000 objetos. Aquí es parte del ejemplo (la ha simplificado un poco):¿Cómo hago que mi JSON sea menos detallado?
"schedules": [
{
"codePractice": 35,
"codeScheduleObject": 576,
"codeScheduleObjectType": "",
"defaultCodeScheduleObject": 12,
"name": "Dr. 1"
},
{
"codePractice": 35,
"codeScheduleObject": 169,
"codeScheduleObjectType": "",
"defaultCodeScheduleObject": 43,
"name": "Dr. 2"
},
{
"codePractice": 35,
"codeScheduleObject": 959,
"codeScheduleObjectType": "",
"defaultCodeScheduleObject": 76,
"name": "Dr. 3"
}
]
Como, se puede imaginar, con un gran número de objetos en esta matriz, el tamaño de la Reponse JSON puede ser bastante grande.
Mi pregunta es, ¿hay un JSON stringifier/analizador que convertir la matriz "schedules"
a ser algo como esto como una cadena JSON:
"schedules": [
["codePractice", "codeScheduleObject", "codeLogin", "codeScheduleObjectType", "defaultCodeScheduleObject","name"],
[35, 576, "", 12, "Dr. 1"],
[35, 169, "", 43, "Dr. 2"],
[35, 959, "", 76, "Dr. 3"],
]
es decir, que no habría una serie al principio de la matriz "schedules"
que contenía las claves de los objetos de esta matriz, y todas las demás matrices contenedoras contendrían los valores.
Podría, si quisiera, hacer la conversión en el servidor y analizarla en el cliente, pero me pregunto si hay una biblioteca estándar para analizar/encadenar JSON grande.
También podría ejecutarlo a través de un minificador, pero me gustaría conservar las claves que tengo actualmente ya que dan algún contexto dentro de la aplicación.
También espero que pueda criticar mi enfoque aquí o sugerir alternativas?
Trate de usar la función gzip en su servidor o incluso intente gzip respuesta JSON por PHP (y enviarlo con un encabezado especial por supuesto). – silex
Gracias, pero ya estoy usando gzip. –
Mantendría el esquema y los datos separados (por ejemplo, '{schema :, data:}'), pero de lo contrario, creo que es válido. No estoy seguro de ninguna biblioteca existente para esto. Sin embargo, después de GZIP, ¿dará como resultado mega-ahorros? No estoy seguro, pero lo dudo parcialmente debido a la * buena duplicación de nombres clave * que existe. Burlarse de un caso de prueba (normal vs. normal + GZIP vs. hipotético-esquema vs. hipotético-esquema + GZIP) sería un buen primer paso para verificar los méritos potenciales de este enfoque. –