2012-03-14 21 views
9

Próbowałem wykryć obsługę JSON z if(JSON.parse) {}, ale to nie działa. Czy istnieje sposób na wykrycie wsparcia JSON?Jak wykrywać obsługę JSON w javascript?

Zrobione z json najsłynniejszej realizacji
+2

Masz na myśli konkretną bibliotekę lub sam skrypt javascript? JSON jest po prostu notacją obiektów javascript, sam javascript obsługuje go natywnie. – websymphony

+0

@websymphony, ale nie ma możliwości * analizowania * natywnie, np. Tworzenia obiektu podanego jako ciąg znaków. –

+1

Czy próbowałeś z if ("JSON" w oknie)? – stecb

Odpowiedz

22

https://github.com/douglascrockford/JSON-js/blob/master/json2.js

var JSON; 
if (JSON && typeof JSON.parse === 'function') { 
    .... 
} 

(I połączyły dwa if: if (!JSON) { linii 163 i if (typeof JSON.parse !== 'function') { linii 406.

Sztuką jest to, że dostanie var JSON wartość obiektu JSON przeglądarki, undefined, jeśli nie,

Należy pamiętać, że w wersji latest na biblioteki zmienili kod, aby coś takiego:

if (typeof JSON === 'object' && typeof JSON.parse === 'function') { 
    .... 
} 

(bez wstępnego uznającej var JSON)

+0

dziękuję bardzo –

+1

HOw możesz sprawdzić 'jeśli (JSON ...)' ?? ** dostaniesz błąd **. to jak robienie 'if (lalala ...) // błąd'. Prawidłowy sposób to: 'if (typeof JSON ===" undefined "...)' –

+0

@RoyiNamir Masz rację ... Zapomniałem linii kodu ... Przed 'if' powinno być' var JSON; '. Dodałem nawet "nowszą" wersję czeku. – xanatos

0

Może nie dokładnie policzyć jako odpowiedź na co został poproszony, ale może parsowania agenta użytkownika (nawigator) i sprawdzanie wersji, czy jesteś pewien, że parser może być alternatywą?

+0

Jest tak wiele możliwych programów użytkownika, że ​​nie jest to praktyczne. Trudno jest być na bieżąco. Istnieje długa historia błędów z tego rodzaju wykrywaniem agentów użytkownika i zazwyczaj istnieją lepsze rozwiązania (wykrywanie cech). – Liam

Powiązane problemy