2009-08-11 31 views
115

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

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

+0

En realidad, creo que hay algún tipo de límite pero no he podido determinarlo; He aquí el caso: tengo una página de Asp.Net (no me juzguen, me pidieron que trabaje con ella) que consulta el DB y obtiene una tabla de datos con alrededor de 2000 filas y 27 columnas. Si dejo caer la tabla de datos a un XML, la solicitud del cliente funciona, pero funciona lento, ya que js está creando la tabla y haciendo algunas cosas ... de todos modos ... hice una rutina DataTable To jSon que siempre me ha funcionado como un encanto, pero en este caso, esa gran cantidad de datos parece estar truncada, o está sucediendo algo más, pero el servidor responde –

+4

¡Tenga cuidado al interpretar las respuestas de las personas a continuación! La mayoría de las respuestas dicen que no hay límites para 'JSON' en sí mismo. Mientras que la mayoría de los servidores tendrán un límite configurable. Ejecuté una prueba simple de AJAX donde incrementé un byte en cada envío y en aproximadamente 8K bytes, falló en varios servidores PHP/Apache que probé ahora. El error fue: "414 (Request-URI Too Large)" – Jeach

+1

Enviamos/recibimos de manera confiable cargas útiles de 100 kb en iOS/iPhone. Algo de lo que hay que tener cuidado es que muchos protocolos reciben datos en fragmentos, y tratar de deserializar el fragmento en lugar de esperar a que se reciban todos los datos provocará un error, a menos que su lógica de deserializador esté especialmente configurada para ello. –

Respuesta

104

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

+1

por lo que técnicamente, si quisiera llevar el código fuente TODO a esta página completa, ¿podría enviarse como un objeto json? – JasonDavis

+2

Sí, con la codificación adecuada. – fresskoma

+0

@jasondavis, Fácilmente. – bdonlan

4

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

Editar: Nos eran capaces de resolver el límite 8K para las cadenas JSON estableciendo la propiedad MaxJsonLength en el web.config como se describe en esta respuesta: https://stackoverflow.com/a/1151993/61569

+2

Un "límite" de 8K es casi seguro un límite de bloque de transmisión de datos, no el límite para un documento JSON. Las cadenas más grandes se pueden procesar volviendo a ensamblar correctamente la transmisión de múltiples bloques. –

+0

Ha pasado un tiempo desde que descubrimos cómo cambiar el límite de 8K en el DataContractJsonSerializer, pero creo que fue la configuración de "MaxJsonLength" (http://msdn.microsoft.com/en-us/library/system.web. script.serialization.javascriptserializer.maxjsonlength (v = vs.110) .aspx) –

11

No hay un límite fijo de lo grande que un bloque de datos JSON es o cualquiera de los campos.

Existen límites para la cantidad de JSON que la implementación de JavaScript de varios navegadores puede manejar (por ejemplo, alrededor de 40 MB según mi experiencia). Ver this question for example.

+3

8K es un límite excepcionalmente pequeño para JSON. Sospecho que no es un límite para el JSON, sino que los datos se transmiten en bloques de 8K, y el código que recibe los datos intenta deserializar un bloque individual en lugar de esperar a que llegue la carga completa. –

+0

Apuesto a que eres correcto Hot Licks. Actualicé mi respuesta. – cdiggins

3

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

3

Las implementaciones son libres de establecer límites en los documentos JSON, incluido el tamaño, así que elija su analizador sabiamente. Consulte 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 anidación. números. Una implementación puede establecer límites en la longitud y el contenido del carácter de las cadenas ".

Cuestiones relacionadas