Compartir a través de


Notación de objetos JavaScript (JSON)

La notación de objetos JavaScript (JSON) es un formato de intercambio de datos simple y ligero basado en un subconjunto de la notación literal de objeto del lenguaje JavaScript. El motor de JavaScript en Windows Internet Explorer 8 implementa la propuesta JSON de ECMAScript 3.1 para las funciones nativas de control de JSON (que usa la API de json2.js de Douglas Crockford).

Internet Explorer 8 incluye un objeto JSON nativo que cumple con la compatibilidad con JSON que se describe en el borrador de trabajo de la propuesta es3.1. Algunas páginas web detectan el objeto JSON nativo y, a continuación, lo usan de forma no estándar. Este uso normalmente provoca un error de script y interrumpe el control de las solicitudes de AJAX. En el ejemplo de código siguiente se muestra la forma incorrecta de usar el objeto JSON.

    if(!window.JSON) JSON = myJSON; 
    JSON.encode(obj); // Not part of the standard

En su lugar, en el ejemplo de código siguiente se muestra una buena manera de usar el objeto JSON.

    JSON = myJSON; 
    JSON.encode(obj);

Windows Internet Explorer incluye compatibilidad nativa para JSON mediante la introducción de un objeto JSON global que tiene dos métodos integrados: stringify y parse. El objeto JSON global se define en el motor de JavaScript y se crea durante la fase de inicialización del motor. Para mantener la compatibilidad con versiones anteriores, esta característica solo está disponible cuando un sitio web usa la versión más reciente de las características de JavaScript mediante el modo de diseño "Estándares de Internet Explorer 8" (documento). Esta característica también puede afectar al comportamiento de las páginas web que dependen de una variable global JSON o usar json2.js.

Puede invalidar el objeto JSON global. Pero cuando una página web usa el modo de diseño "Estándares de Internet Explorer 8", ya no es un objeto indefinido. Dado que se crea una instancia de JSON como un nombre global por el motor de JavaScript, comprueba como "if(!this). JSON)" se evalúa como False y se debe cambiar en el código de usuario.

Es probable que las páginas web que usan json2.js no se vean afectadas. Con pocas excepciones, estas páginas deben funcionar más rápido. Las excepciones se deben a las diferencias entre la implementación de JSON nativa de Internet Explorer y json2.js. Por ejemplo, durante la serialización, la implementación de JSON nativa detecta ciclos y no entra en recursividad infinita como json.js. Para obtener más información sobre estas excepciones, consulte los blogs de JavaScript.

Para obtener más información, consulte Documentación de JSON y Control de versiones y Compatibilidad con versiones del motor de JavaScript.

Corrección de problemas de compatibilidad en aplicaciones web mediante la vista de compatibilidad