Używam jquery, JSON i AJAX do systemu komentarzy. Ciekaw jestem, czy istnieje ograniczenie rozmiaru tego, co można przesyłać / przechowywać w formacie JSON? Na przykład, jeśli użytkownik wpisze dużą kwotę i wyślę ją przez JSON, czy istnieje jakiś maksymalny limit?
Przez JSON można również wysyłać dowolny tekst. na przykład czasami zezwalam użytkownikom na używanie html, czy to będzie w porządku?
connectionDidFinishLoading
i wykonać tłumaczenie JSON tam (lub później), a nie wdidReceiveData
(gdzie powinieneś po prostu połączyć otrzymane dane z poprzednią datą Odebrane). Inne środowiska są podobne.Odpowiedzi:
JSON jest podobny do innych formatów danych, takich jak XML - jeśli chcesz przesłać więcej danych, po prostu wysyłasz więcej danych. Żądanie JSON nie ma żadnego wewnętrznego ograniczenia rozmiaru. Wszelkie ograniczenia byłyby ustawiane przez serwer analizujący żądanie. (Na przykład ASP.NET ma właściwość „MaxJsonLength” serializatora).
źródło
JavaScriptSerializer.MaxJsonLength
wymienionej w odpowiedzi Amber. (NB cytowałem z MSDN )Nie ma ustalonego limitu wielkości bloku danych JSON ani któregokolwiek z pól.
Istnieją ograniczenia co do tego, ile JSON może obsłużyć implementacja JavaScript w różnych przeglądarkach (np. Około 40 MB z mojego doświadczenia). Zobacz na przykład to pytanie .
źródło
To zależy od implementacji twojego modułu zapisującego / parsera JSON. Wydaje się, że Microsoft DataContractJsonSerializer ma sztywny limit około 8kb (myślę, że 8192) i będzie wyświetlał błąd w przypadku większych ciągów.
Edycja: udało nam się rozwiązać limit 8K dla ciągów JSON, ustawiając właściwość MaxJsonLength w konfiguracji sieci Web zgodnie z opisem w tej odpowiedzi: https://stackoverflow.com/a/1151993/61569
źródło
Naprawdę nie ma ograniczeń co do wielkości wysyłanych lub odbieranych danych JSON. Możemy również wysłać dane Json w pliku. W zależności od możliwości przeglądarki, z którą pracujesz, dane Json mogą być obsługiwane.
źródło
Implementacje mogą swobodnie ustalać limity dla dokumentów JSON, w tym rozmiar, więc mądrze wybierz parser. Zobacz RFC 7159 , Rozdział 9. Parsery:
"Implementacja może określać limity rozmiaru tekstów, które akceptuje. Implementacja może określać limity maksymalnej głębokości zagnieżdżania. Implementacja może określać ograniczenia dotyczące zakresu i precyzji liczb. Implementacja może określać ograniczenia dotyczące długości i charakteru zawartość ciągów. "
źródło
Jeśli pracujesz z ASP.NET MVC, możesz rozwiązać problem, dodając MaxJsonLength do wyniku:
źródło
int.MaxValue
jest odrzucany jako „za duży” - wypróbuj inne rozmiary i zobacz, jak duży możesz uzyskać.Z pewnością wszyscy przegapili tutaj sztuczkę. Obecny limit rozmiaru pliku json wynosi 18 446 744 073 709 551 616 znaków lub, jeśli wolisz bajty, lub nawet 2 ^ 64 bajty, jeśli patrzysz na przynajmniej 64-bitowe infrastruktury.
Pod każdym względem możemy założyć, że jest nieograniczony, ponieważ prawdopodobnie będziesz miał trudności z trafieniem w ten problem ...
źródło
Maksymalna długość ciągów JSON. Wartość domyślna to 2097152 znaków, co odpowiada 4 MB danych ciągu Unicode.
Zobacz poniższy adres URL
https://docs.microsoft.com/en-us/dotnet/api/system.web.script.serialization.javascriptserializer.maxjsonlength?view=netframework-4.7.2
źródło
JavaScriptSerializer
klasy. IMaxJsonLength
zostało już omówione w innych odpowiedziach.