Y a-t-il une limite à ce que peut contenir JSON?
j'utilise jquery, JSON, et AJAX pour un système de commentaire. Je suis curieux, y a-t-il une limite de taille sur ce que vous pouvez envoyer à travers/stocker avec JSON? Par exemple, si un utilisateur tape une grande quantité et que je l'envoie par JSON, y a-t-il une sorte de limite maximale?
peut aussi envoyer n'importe quel type de texte par JSON. par exemple, parfois, j'autorise les utilisateurs à utiliser html, est-ce que ce sera ok?
6 réponses
JSON est similaire à D'autres formats de données comme XML - si vous avez besoin de transmettre plus de données, vous envoyez juste plus de données. Il n'y a pas de limite de taille inhérente à la requête JSON. Toute limitation serait définie par le serveur qui analyse la requête. (Par exemple, ASP.NET possède la propriété" MaxJsonLength " du serializer.)
il n'y a pas de limite fixe à la taille d'un bloc de données JSON ni à aucun des champs.
il y a des limites à la quantité de JSON que l'implémentation JavaScript de divers navigateurs peut gérer (par exemple environ 40 Mo selon mon expérience). Voir cette question par exemple .
cela dépend de l'implémentation de votre JSON writer/parser. Le DataContractJsonSerializer de Microsoft semble avoir une limite dure autour de 8kb( 8192 je pense), et il va se tromper pour de plus grandes chaînes.
Edit: Nous avons pu résoudre la limite de 8K pour les chaînes JSON en définissant la propriété MaxJsonLength dans la configuration web comme décrit dans cette réponse: https://stackoverflow.com/a/1151993/61569
il n'y a vraiment aucune limite sur la taille des données JSON à envoyer ou à recevoir. Nous pouvons aussi envoyer des données Json dans le fichier. Selon les capacités du navigateur avec lequel vous travaillez, les données Json peuvent être manipulées.
implémentations sont libres de fixer des limites sur les documents JSON, y compris la taille, donc choisissez votre analyseur sagement. Voir RFC 7159 , Section 9. Les analyseurs:
"Une mise en œuvre peut fixer des limites sur la taille des textes qu'il accepte. Une mise en œuvre peut fixer des limites à la profondeur maximale de nidification. Une mise en œuvre peut fixer des limites à la portée et à la précision des nombres. Une mise en œuvre peut fixer des limites à la longueur et au contenu des caractères des chaîne."
si vous travaillez avec ASP.NET MVC, vous pouvez résoudre le problème en ajoutant le MaxJsonLength à votre résultat:
var jsonResult = Json(new
{
draw = param.Draw,
recordsTotal = count,
recordsFiltered = count,
data = result
}, JsonRequestBehavior.AllowGet);
jsonResult.MaxJsonLength = int.MaxValue;