2009-08-11 5 views
115

Ich verwende jquery, JSON und AJAX für ein Kommentarsystem. Ich bin gespannt, gibt es eine Größenbeschränkung für das, was Sie mit JSON senden/speichern können? Wie wenn ein Benutzer einen großen Betrag eingibt und ich ihn über JSON sende, gibt es eine Art Höchstgrenze?Gibt es eine Begrenzung, wie viel JSON halten kann?

Auch jede Art von Text kann über JSON gesendet werden. zum Beispiel erlaube ich irgendwann Benutzern, HTML zu verwenden, wird das ok sein?

+0

Eigentlich denke ich, es gibt eine Art Grenze, aber ich konnte es nicht feststellen; Hier ist der Fall: Ich habe eine Asp.Net-Seite (verurteile mich nicht, ich wurde gebeten, damit zu arbeiten), die die Datenbank abfragt und eine Datentabelle mit ungefähr 2000 Zeilen und 27 Spalten erhält. Wenn ich die Datentabelle zu einem XML lösche, funktioniert die Anfrage vom Klienten, langsam, aber funktioniert, da js die Tabelle erstellt und einige Sachen tut .. irgendwie ... Ich machte eine DataTable To jSon Routine, die für mich immer wie gearbeitet hat ein Charme, aber in diesem Fall scheint diese große Menge an Daten abgeschnitten zu sein, oder etwas anderes passiert, aber der Server-Responsor –

+4

Seien Sie vorsichtig, wie Sie die Antworten der Leute unten interpretieren! Die meisten Antworten sagen, dass "JSON" selbst keine Grenzen kennt. Während die meisten Server ein konfigurierbares Limit haben werden. Ich habe einen einfachen AJAX-Test ausgeführt, bei dem ich bei jedem Senden ein Byte inkrementiert habe und bei ungefähr 8K Bytes auf mehreren PHP/Apache-Servern, die ich jetzt ausprobierte, fehlschlug. Der Fehler lautete: "414 (Request-URI Too Large)" – Jeach

+1

Wir senden/empfangen zuverlässig 100kb Payloads auf iOS/iPhone. Etwas, das zu beachten ist, ist, dass viele Protokolle Daten in Chunks empfangen und der Versuch, den Chunk zu deserialisieren und nicht darauf wartet, dass alle Daten empfangen werden, zu einem Fehler führt, sofern Ihre Deserializer-Logik nicht speziell dafür eingerichtet ist. –

Antwort

104

JSON ähnelt anderen Datenformaten wie XML - wenn Sie mehr Daten übertragen müssen, senden Sie einfach mehr Daten. Es gibt keine inhärente Größenbeschränkung für die JSON-Anforderung. Jede Einschränkung würde von dem Server vorgenommen, der die Anforderung analysiert. (Zum Beispiel hat ASP.NET die Eigenschaft "MaxJsonLength" des Serialisierers.)

+1

so technicly, wenn ich den GANZEN Quellcode zu dieser ganzen Seite nehmen möchte, könnte es als ein Json-Objekt gesendet werden? – JasonDavis

+2

Ja, mit richtiger Codierung. – fresskoma

+0

@jasondavis, Leicht. – bdonlan

4

Es hängt von der Implementierung Ihres JSON Writer/Parser ab. Microsofts DataContractJsonSerializer scheint eine harte Grenze um 8kb zu haben (8192 denke ich), und es wird bei größeren Strings Fehler geben.

Edit: Wir konnten die 8K-Grenze für JSON-Strings lösen, indem die MaxJsonLength Eigenschaft in der Web-Konfigurationseinstellung, wie in dieser Antwort beschrieben: https://stackoverflow.com/a/1151993/61569

+2

Ein 8K-Limit ist fast sicher eine Datenübertragungsblockgrenze, nicht die Grenze für ein JSON-Dokument. Größere Zeichenfolgen können verarbeitet werden, indem die Mehrblockübertragung korrekt wieder zusammengesetzt wird. –

+0

Es ist eine Weile her, seit wir herausgefunden haben, wie man das 8K-Limit im DataContractJsonSerializer ändert, aber ich denke, es war die Einstellung "MaxJsonLength" (http://msdn.microsoft.com/en-us/library/system.web). script.serialization.javascriptserializer.maxjsonlength (v = vs.110) .aspx) –

11

Es gibt keine feste Grenze ist, wie groß ein JSON-Datenblock ist oder eines der Felder.

Es gibt Grenzen, wie viel JSON die JavaScript-Implementierung von verschiedenen Browsern verarbeiten kann (z. B. etwa 40 MB nach meiner Erfahrung). Siehe this question for example.

+3

8K ist ein außergewöhnlich kleines Limit für JSON. Ich vermute, das ist keine Grenze für den JSON, sondern die Daten werden in 8K-Blöcken übertragen, und der Code, der die Daten empfängt, versucht einen einzelnen Block zu deserialisieren, anstatt darauf zu warten, dass die gesamte Nutzlast ankommt. –

+0

Ich wette du bist richtig Hot Licks. Ich habe meine Antwort aktualisiert. – cdiggins

3

Es gibt keine Begrenzung für die Größe von JSON-Daten, die gesendet oder empfangen werden sollen. Wir können JSON-Daten auch in einer Datei senden. Je nach den Fähigkeiten des Browsers, mit dem Sie arbeiten, können Json-Daten verarbeitet werden.

3

Implementierungen können JSON-Dokumente, einschließlich der Größe, frei festlegen. Wählen Sie daher Ihren Parser mit Bedacht. Siehe RFC 7159, Abschnitt 9. Parser:

"Eine Implementierung kann Grenzen für die Größe von Texten, die es akzeptiert. Eine Implementierung kann Grenzen für die maximale Tiefe der Verschachtelung setzen. Eine Implementierung kann Grenzen für die Reichweite und die Genauigkeit von Eine Implementierung kann Grenzen für die Länge und den Zeicheninhalt von Strings setzen. "

Verwandte Themen