2009-08-11 36 views
115

jquery、JSON、AJAXをコメントシステムに使用しています。私は興味がありますが、JSONを使って/ storeに送信できるものにはサイズ制限がありますか?ユーザーが大量のデータを入力してJSON経由で送信する場合、最大限の制限がありますか?JSONにどれくらいの制限がありますか?

また、JSONを通じてあらゆる種類のテキストを送信することができます。例えば、いつか私はユーザーにHTMLを使用させることができます。これは大丈夫でしょうか?

+0

実際には、私はある種の制限があると思うが、私はそれを特定できなかった。ここにはケースがあります:私はAsp.Netページを持っています(私を判断しないで、私はそれを使って作業するように求められました)。DBをクエリし、2000行27列のデータテーブルを取得します。データテーブルをXMLにドロップすると、クライアントからのリクエストは遅くなりますが、jsはテーブルを作成して何らかの処理をしています...とにかく...私はいつも私のように働いていたjSonルーチンにDataTableを行いました魅力ですが、この場合、その膨大な量のデータが切り捨てられているように見えるか、何か他のことが起こっていますが、サーバーが応答します –

+4

以下の人々の答えをどのように解釈するか注意してください!ほとんどの答えは、JSON自体には制限がないと言います。ほとんどのサーバーには設定可能な制限があります。私は単純なAJAXテストを実行しました。ここでは、各sendと約8Kバイトでバイトをインクリメントしました。私は今試したいくつかのPHP/Apacheサーバーで失敗しました。エラー:「414(Request-URI Too Large)」 – Jeach

+1

iOS/iPhoneで確実に100kbのペイロードを送受信します。注意すべき点は、多くのプロトコルがデータをチャンクで受信し、デシリアライザロジックが特別に設定されていない限り、すべてのデータが受信されるのを待つのではなく、チャンクをデシリアライズしようとすると失敗することです。 –

答えて

104

JSONはXMLなどの他のデータ形式と似ています。データをさらに送信する必要がある場合は、データを送信するだけです。 JSONリクエストにはサイズの制限がありません。任意の制限は、要求を解析するサーバーによって設定されます。たとえば、ASP.NETにはシリアライザの "MaxJsonLength"プロパティがあります。

+1

技術的には、この全ページに全ソースコードを取りたいのであれば、jsonオブジェクトとして送ることができますか? – JasonDavis

+2

はい、適切なエンコーディングを使用します。 – fresskoma

+0

@jasondavis、簡単に。 – bdonlan

4

JSONライター/パーサーの実装によって異なります。 MicrosoftのDataContractJsonSerializerは約8kb(私は考えると8192)のハード制限があるようですが、大きな文字列の場合はエラーになります。

編集: 私たちは、この回答に記載されたウェブの設定でMaxJsonLengthプロパティを設定することで、JSON文字列の8Kの制限を解決することができました:https://stackoverflow.com/a/1151993/61569

+2

8Kの「制限」は、ほぼ確実にJSONドキュメントの制限ではなく、データ送信ブロックの境界です。マルチブロック送信を正しく再組み立てすることで、より大きい文字列を処理することができます。 –

+0

DataContractJsonSerializerで8Kの制限を変更する方法がわかってからしばらくしていますが、 "MaxJsonLength"設定(http://msdn.microsoft.com/en-us/library/system.web)だと思います。 script.serialization.javascriptserializer.maxjsonlength(v = vs.110).aspx) –

11

どのように大規模なJSONデータブロックに固定された制限はありませんまたはいずれかのフィールドです。

さまざまなブラウザのJavaScript実装が処理できるJSON(たとえば、私の経験では約40MB)には限界があります。 this question for exampleを参照してください。

+3

8KはJSONの非常に小さな制限です。 JSONの制限ではないと思われますが、データは8Kブロックで送信されています。データを受け取るコードは、ペイロード全体が到着するのを待つのではなく、個々のブロックをデシリアライズしようとしています。 –

+0

私はあなたが正しいホット・リックスだと思います。私は自分の答えを更新しました。 – cdiggins

3

実際に送信または受信するJSONデータのサイズに制限はありません。私たちはJsonデータもファイルに送ることができます。使用しているブラウザの機能に応じて、Jsonデータを処理できます。

3

実装では、サイズを含めJSONドキュメントの制限を自由に設定できますので、パーサーを賢明に選択してください。 RFC 7159セクション9を参照してください。パーサー:

"実装では、受け入れるテキストのサイズに制限が設定されることがあります。実装では、最大ネスティングの深さに制限が設定されることがあります。インプリメンテーションでは、文字列の長さと文字の内容に制限が設定される可能性があります。

関連する問題