Widziałem odniesienia do niektórych przeglądarek natywnie obsługujących parsowanie/serializację obiektów JSON bezpiecznie i efektywnie za pomocą obiektu window.JSON
, ale szczegóły są trudne do zdobycia. Czy ktoś może wskazać właściwy kierunek? Jakie metody ujawnia ten obiekt? W jakich przeglądarkach jest obsługiwana?Obsługa JSON-a w przeglądarkach (window.JSON)
Odpowiedz
Wszystkie nowoczesne przeglądarki obsługują kodowanie/dekodowanie JSON (Internet Explorer 8+, Firefox 3.1+, Safari 4+ i Chrome 3+). Zasadniczo, JSON.parse(str)
przeanalizuje ciąg JSON w str
i zwróci obiekt, a JSON.stringify(obj)
zwróci reprezentację JSON obiektu obj
.
Więcej informacji na temat MDN article.
Wiem, że wsparcie nie jest powszechne, ale użycie tej metody powinno być dużo szybsze i bezpieczniejsze niż eval() w łańcuchu, więc chcę go użyć tam, gdzie jest dostępny. Masz pomysł na wsparcie innych przeglądarek? – levik
Nie powiedziałem, nie używaj tego, powiedziałem, nie licz na to. Zdecydowanie sprawdź, czy jest dostępny (w tym momencie tylko IE8 i kilku użytkowników Fx Beta) i użyj go, jeśli tak, ale mówię tylko, że nie powinieneś zakładać, że przeglądarka go obsługuje. Obecnie są to jedyne przeglądarki, które ją obsługują, a WebKit pracuje nad tym teraz, więc prawdopodobnie niedługo pojawi się w Google Chrome i Safari. –
Aha, i na marginesie, NIGDY ciągi JSON eval(). Zamiast tego użyj jednej z wielu dostępnych bibliotek parsowania JSON. –
Zaletą używania json2.js jest to, że instaluje on parser tylko wtedy, gdy przeglądarka go jeszcze nie ma. Możesz zachować zgodność ze starszymi przeglądarkami, ale użyj natywnego analizatora składni JSON (który jest bezpieczniejszy i szybszy), jeśli jest dostępny.
przeglądarkom macierzystego JSON:
- IE8 +
- Firefox 3.1+
- Safari 4.0.3+
- opera 10.5+
G.
[rozszerzenie musicfreak komentarz]
Jeśli używasz jQuery, użyj parseJSON
var obj = jQuery.parseJSON(data)
Wewnętrznie sprawdza, czy przeglądarka obsługuje .JSON.parse oraz (jeśli są dostępne) wywołuje rodzimy window.JSON.parse.
Jeśli nie, analizuje się.
jQuery 1.7.1.js - 555 linii ...
parseJSON: function(data) {
if (typeof data !== "string" || !data) {
return null;
}
// Make sure leading/trailing whitespace is removed (IE can't handle it)
data = jQuery.trim(data);
// Attempt to parse using the native JSON parser first
if (window.JSON && window.JSON.parse) {
return window.JSON.parse(data);
}
// Make sure the incoming data is actual JSON
// Logic borrowed from http://json.org/json2.js
if (rvalidchars.test(data.replace(rvalidescape, "@")
.replace(rvalidtokens, "]")
.replace(rvalidbraces, ""))) {
return (new Function("return " + data))();
}
jQuery.error("Invalid JSON: " + data);
}
rvalidchars = /^[\],:{}\s]*$/,
rvalidescape = /\\(?:["\\\/bfnrt]|u[0-9a-fA-F]{4})/g,
rvalidtokens = /"[^"\\\n\r]*"|true|false|null|-?\d+(?:\.\d*)?(?:[eE][+\-]?\d+)?/g,
rvalidbraces = /(?:^|:|,)(?:\s*\[)+/g,
Z korzyścią dla każdego, kto prowadzi do tego wątku - dla up-to-date, ostateczną listę przeglądarek, które wspierają Obiekt JSON look here.. Krótka ogólna odpowiedź - prawie wszystkie przeglądarki, które mają znaczenie w roku 2013+.
- 1. Obsługa SVG w przeglądarkach smartfonów
- 2. Obsługa TypeScript we współczesnych przeglądarkach
- 3. Obsługa obiektów JSON w przeglądarkach mobilnych
- 4. Obsługa pióra/rysika w przeglądarkach internetowych
- 5. Czy obsługa JavaScript jest dostępna tylko w przeglądarkach internetowych?
- 6. Czy obsługa atrybutów danych HTML 5 w starych przeglądarkach?
- 7. Parsowanie jsona w Ratpack Groovy
- 8. Schemat JSona i dziedziczenie
- 9. Parsowanie parsowania odpowiedzi jsona
- 10. JSON - Generowanie jsona w pętli w pytonie
- 11. Kompresja HTTP Jsona z Gzipem w IIS8
- 12. Debugowanie w przeglądarkach mobilnych?
- 13. Porwanie Jsona z zapytaniem o Ajax Jquery
- 14. Czy obsługa nawiasów klamrowych w regexie javascript jest taka sama we wszystkich nowoczesnych przeglądarkach?
- 15. Stylizacja autouzupełniania rozwijana w przeglądarkach
- 16. Array.sort stabilność w różnych przeglądarkach
- 17. Pracownicy WWW w przeglądarkach mobilnych
- 18. Obsługa przeglądarki DocumentFragment
- 19. Parsowanie Jsona w dynamiczny obiekt C# za pomocą klucza dynamicznego
- 20. Serwer gniazdek w JavaScript (w przeglądarkach)?
- 21. Ustawianie szerokości zakładki PRE w różnych przeglądarkach
- 22. Zapisywanie w różnych przeglądarkach jako .txt
- 23. IndexedDB getAll w przeglądarkach innych niż Firefox
- 24. jQuery scrollTop niespójne w różnych przeglądarkach
- 25. Liniowy gradient w przeglądarkach Chrome i Safari
- 26. Lokalne przechowywanie html5 w różnych przeglądarkach
- 27. Jak wykryć możliwość wyboru katalogu w przeglądarkach?
- 28. Zapobieganie pobieraniu wideo w przeglądarkach mobilnych
- 29. Pozycja "początkowa" w różnych przeglądarkach - css
- 30. Które silniki są używane w większych przeglądarkach?
Zobacz [Kiedy mogę korzystać z parsowania JSON?] (Http://caniuse.com/json), aby uzyskać informacje na temat przeglądarek z natywną obsługą obiektu [JSON] (http://ecma262-5.com/ELS5_Section_15. htm # Section_15.12). – outis