¿Hay un límite en cuanto JSON puede contener?


Estoy usando jquery, JSON y AJAX para un sistema de comentarios. Tengo curiosidad, ¿hay un límite de tamaño en lo que puede enviar a través / almacenar con JSON? Como si un usuario escribe una gran cantidad y la envío a través de JSON ¿hay algún tipo de límite máximo?

También se puede enviar cualquier tipo de texto a través de JSON. por ejemplo, en algún momento permito a los usuarios usar html, ¿estará bien?

 123
Author: scunliffe, 2009-08-11

6 answers

JSON es similar a otros formatos de datos como XML: si necesita transmitir más datos, simplemente envíe más datos. No hay limitación de tamaño inherente a la solicitud JSON. Cualquier limitación sería establecida por el servidor que analiza la solicitud. (Por ejemplo, ASP.NET tiene la propiedad "maxJsonLength" del serializador.)

 111
Author: Amber,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2017-02-04 16:23:40

No hay un límite fijo sobre el tamaño de un bloque de datos JSON o cualquiera de los campos.

Hay límites a la cantidad de JSON que puede manejar la implementación de JavaScript de varios navegadores (por ejemplo, alrededor de 40 MB en mi experiencia). Ver esta pregunta por ejemplo.

 11
Author: cdiggins,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2017-05-23 12:10:05

Depende de la implementación de su JSON writer/parser. DataContractJsonSerializer de Microsoft parece tener un límite duro alrededor de 8kb (8192 creo), y se error para cadenas más grandes.

Editar: Pudimos resolver el límite de 8K para cadenas JSON estableciendo la propiedad maxJsonLength en la configuración web como se describe en esta respuesta: https://stackoverflow.com/a/1151993/61569

 5
Author: Anthony F,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2017-05-23 12:02:40

Realmente no hay límite en el tamaño de los datos JSON a enviar o recibir. También podemos enviar datos Json en el archivo. De acuerdo con las capacidades del navegador con el que está trabajando, los datos Json se pueden manejar.

 4
Author: Chaitanya Belsare,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2014-10-15 06:30:34

Las implementaciones son libres de establecer límites en los documentos JSON, incluido el tamaño, así que elija sabiamente su analizador. Véase RFC 7159, sección 9. Analizadores:

"Una implementación puede establecer límites en el tamaño de los textos que acepta. Una implementación puede establecer límites en la profundidad máxima de anidamiento. Una implementación puede establecer límites en el rango y precisión de los números. Una implementación puede establecer límites en la longitud y el contenido de caracteres de las cadenas."

 3
Author: stleary,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2015-06-09 17:36:39

Si está trabajando con ASP.NET MVC, puede resolver el problema agregando el maxJsonLength a su resultado:

var jsonResult = Json(new
{
    draw = param.Draw,
    recordsTotal = count,
    recordsFiltered = count,
    data = result
}, JsonRequestBehavior.AllowGet);
jsonResult.MaxJsonLength = int.MaxValue;
 0
Author: mathias.horn,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2018-03-22 14:35:19