2012-03-14 8 views
9

Intenté detectar compatibilidad con JSON con if(JSON.parse) {} pero no funciona. ¿Hay alguna manera de detectar el soporte JSON?¿Cómo detectar el soporte de JSON en javascript?

+2

¿Quiere decir en una biblioteca específica o javascript en sí? JSON es solo una notación para objetos javascript, JavaScript lo soporta de forma nativa. – websymphony

+0

@websymphony, pero no tiene la capacidad de * analizar * de forma nativa, por ejemplo, crear un objeto dado una cadena. –

+1

¿Has probado con if ('JSON' en la ventana)? – stecb

Respuesta

22

Tomado del JSON más famoso aplicación https://github.com/douglascrockford/JSON-js/blob/master/json2.js

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

(He fusionado los dos if: if (!JSON) { de la línea 163 y la línea 406. if (typeof JSON.parse !== 'function') { de

El truco aquí es que el var JSON conseguirá el valor del objeto JSON del navegador, undefined si no.

Tenga en cuenta que en el latest versi el de la biblioteca se cambió el código para algo como:

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

(sin pre-declarando la var JSON)

+0

muchas gracias –

+1

¿Cómo puedes verificar 'if (JSON ...)' ?? ** obtendrás un error **. es como hacer 'if (lalala ...) // error'. La forma correcta es: 'if (typeof JSON ===" undefined "...)' –

+0

@RoyiNamir Tienes razón ... Había olvidado una línea de código ... Antes del 'si' debería haber un' var JSON; '. Incluso he agregado la versión "más nueva" del cheque. – xanatos

0

¿No podría contar exactamente como una respuesta a lo que se pedía, sino que tal vez analizar el agente de usuario (navegador) y comprobar si hay versiones compatibles con el analizador, ¿es una posible alternativa?

+0

Hay tantos agentes de usuario posibles que esto no es práctico. Es difícil mantenerse al día. Hay un largo historial de errores con este tipo de detección de agente de usuario, y generalmente hay mejores soluciones (detección de características). – Liam

Cuestiones relacionadas