
El objeto JSON en javascript contiene funciones que interpretan la sintaxis de notación de objetos de JavaScript (JSON) y convierten los valores en sintaxis JSON. Este objeto no está destinado a ser inicializado o construido (a través de un operador new), y no tiene trabajo propio excepto por tener dos funciones secundarias.
Características generales
La sintaxis JSON es una sintaxis para almacenar objetos, matrices, números, cadenas, valores booleanos y valores null. Se basa en la sintaxis de JavaScript pero difiere de ella, algunos códigos JavaScript no son válidos en JSON y algunos códigos JSON no son válidos en JavaScript. La siguiente tabla muestra algunas de las diferencias entre JavaScript y JSON cuando se trata de tipos de datos:
| Tipo de datos en JavaScript | Diferencia en JSON |
|---|---|
| Objetos y matrices | Los nombres de propiedad deben ir entre comillas dobles y no se permite una coma después del último elemento. |
| preparación | Los ceros iniciales no están permitidos para números enteros (los ceros se ignorarán en una función JSON.stringify, pero la función JSON.parse arrojará el error SyntaxError). El punto decimal debe ir seguido de al menos un dígito. |
| cadenas de texto | Solo se permite un subconjunto de los caracteres de escape, algunos caracteres de control no están permitidos y las cadenas de texto deben ir entre comillas dobles. Vea el siguiente ejemplo en el que la función funciona JSON.parse sin problemas pero arrojará un error SyntaxError al intentar interpretar la cadena como:código JavaScript: var code = ‘»\u2028\u2029″‘; JSON.parse(code); // // funciona sin problemas eval ( código ); // fallar |
Esta es la sintaxis JSON completa:
JSON = null
or true or false
or JSONNumber
or JSONString
or JSONObject
or JSONArray
JSONNumber = - PositiveNumber
or PositiveNumber
PositiveNumber = DecimalNumber
or DecimalNumber . Digits
or DecimalNumber . Digits ExponentPart
or DecimalNumber ExponentPart
DecimalNumber = 0
or OneToNine Digits
ExponentPart = e Exponent
or E Exponent
Exponent = Digits
or + Digits
or - Digits
Digits = Digit
or Digits Digit
Digit = 0 through 9
OneToNine = 1 through 9
JSONString = ""
or " StringCharacters "
StringCharacters = StringCharacter
or StringCharacters StringCharacter
StringCharacter = any character
except " or \ or U+0000 through U+001F
or EscapeSequence
EscapeSequence = \" or \/ or \\ or \b or \f or \n or \r or \t
or \u HexDigit HexDigit HexDigit HexDigit
HexDigit = 0 through 9
or A through F
or a through f
JSONObject = { }
or { Members }
Members = JSONString : JSON
or Members , JSONString : JSON
JSONArray = [ ]
or [ ArrayElements ]
ArrayElements = JSON
or ArrayElements , JSONFunciones JSON
JSON.parse()
Intérprete una cadena JSON, convierte opcionalmente el valor y los atributos y devuelva el resultado.
JSON.stringify()
Devuelve una cadena JSON asociada con el valor dado y, opcionalmente, se puede hacer que contenga propiedades específicas o reemplazar valores de propiedad según lo desee el usuario.
Falta de compatibilidad con el navegador
El objeto JSON no era compatible con navegadores más antiguos. Este problema puede evitarse agregando el siguiente código al comienzo de los scripts, lo que permite que el objeto se utiliza JSON en navegadores que no lo admitan (por ejemplo, versiones anteriores de IE).
El siguiente algoritmo simula el objeto JSON:
if (!window.JSON) {
window.JSON = {
parse: function(sJSON) { return eval('(' + sJSON + ')'); },
stringify: (function () {
var toString = Object.prototype.toString;
var hasOwnProperty = Object.prototype.hasOwnProperty;
var isArray = Array.isArray || function (a) { return toString.call(a) === '[object Array]'; };
var escMap = {'"': '\\"', '\\': '\\\\', '\b': '\\b', '\f': '\\f', '\n': '\\n', '\r': '\\r', '\t': '\\t'};
var escFunc = function (m) { return escMap[m] || '\\u' + (m.charCodeAt(0) + 0x10000).toString(16).substr(1); };
var escRE = /[\\"\u0000-\u001F\u2028\u2029]/g;
return function stringify(value) {
if (value == null) {
return 'null';
} else if (typeof value === 'number') {
return isFinite(value) ? value.toString() : 'null';
} else if (typeof value === 'boolean') {
return value.toString();
} else if (typeof value === 'object') {
if (typeof value.toJSON === 'function') {
return stringify(value.toJSON());
} else if (isArray(value)) {
var res = '[';
for (var i = 0; i < value.length; i++)
res += (i ? ', ' : '') + stringify(value[i]);
return res + ']';
} else if (toString.call(value) === '[object Object]') {
var tmp = [];
for (var k in value) {
// in case "hasOwnProperty" has been shadowed
if (hasOwnProperty.call(value, k))
tmp.push(stringify(k) + ': ' + stringify(value[k]));
}
return '{' + tmp.join(', ') + '}';
}
}
return '"' + value.toString().replace(escRE, escFunc) + '"';
};
})()
};
}Para obtener soluciones más complejas para agregar compatibilidad con un objeto JSON, consulte JSON2 y JSON3.
Soporte de navegadores
| Característica | Chrome | Firefox | IE | Opera | Safari |
|---|---|---|---|---|---|
| Soporte básico | sí | 3,5 | 8 | 10,5 | 4 |
- Expresión const en JavaScript
- Expresión let en JavaScript
- Expresión var en JavaScript
- Expresión try…catch en JavaScript
- Expresión throw en JavaScript
- Continue en JavaScript
- Switch en JavaScript
- Expresiones if…else en JavaScript
- Declaración vacía o empty en JavaScript
- Break en JavaScript
- Sentencia block en JavaScript
- Arguments en JavaScript
- Promise en JavaScript
- Number en JavaScript
- Características JSON en JavaScript
- Array en JavaScript
- RegExp en JavaScript
- String en JavaScript
- Date en JavaScript
- Math en JavaScript
- URIError en JavaScript
- TypeError en JavaScript
- SyntaxError en JavaScript
- ReferenceError en JavaScript
- RangeError en JavaScript
- EvalError en JavaScript
- Características Boolean en JavaScript
- Error en JavaScript
- Función Symbol en JavaScript
- Constructor Function en JavaScript
- Constructor Object en JavaScript
- Función unescape() en JavaScript
- Función eval() en JavaScript
- Valor null en JavaScript
- Características Undefined en JavaScript
- Características NaN en JavaScript
- Características Infinity en JavaScript
- Función parseFloat() en JavaScript
- Función isNaN() en JavaScript
- Función isFinite() en JavaScript
- Función escape() en JavaScript
- Función encodeURIComponent() en JavaScript








































