--- title: JSON.parse() slug: Web/JavaScript/Reference/Global_Objects/JSON/parse tags: - ECMAScript5 - JSON - JavaScript - Referencia - metodo translation_of: Web/JavaScript/Reference/Global_Objects/JSON/parse original_slug: Web/JavaScript/Referencia/Objetos_globales/JSON/parse ---
El método JSON.parse()
analiza una cadena de texto como JSON, transformando opcionalmente el valor producido por el análisis.
JSON.parse(text[, reviver])
text
reviver
{{optional_inline()}}Retorna el objeto que se corresponde con el texto JSON entregado.
Lanza una excepción {{jsxref("SyntaxError")}} si la cadena a transformar no es un JSON válido.
JSON.parse()
JSON.parse('{}'); // {} JSON.parse('true'); // true JSON.parse('"foo"'); // "foo" JSON.parse('[1, 5, "false"]'); // [1, 5, "false"] JSON.parse('null'); // null
Usando el parámetro reviver
Si se especifica un reviver, el valor computado por el parsing es transformado antes de retornar. Específicamente, el valor computado, y todas sus propiedades (comenzando con las propiedades más anidadas y siguiendo al propio valor original), son individualmente ejecutados a través del reviver
, el cual es llamado con el objeto que contiene la propiedad que está siendo procesada como this
y con el nombre de la propiedad como cadena y el valor de la propiedad como argumentos. Si la función reviver
retorna undefined
(o no retorna algún valor, por ejemplo: si la ejecución cae el final de la función), la propiedad es eliminada del objeto. De otra manera, la propiedad es redefinidad para ser el valor de retorno.
El reviver
es llamada último con la cadena vacía y el valor más alto para permitir la transformación del valor más alto. Asegúrese de manejar este caso adecuadamente, por lo general mediante la devolución del valor proporcionado, o JSON.parse
will retorna undefined
.
JSON.parse('{"p": 5}', function (k, v) { if(k === "") return v; // if topmost value, return it, return v * 2; // else return v * 2. }); // { p: 10 } JSON.parse('{"1": 1, "2": 2,"3": {"4": 4, "5": {"6": 6}}}', function (k, v) { console.log(k); // log the current property name, the last is "". return v; // return the unchanged property value. }); // 1 // 2 // 4 // 6 // 5 // 3 // ""
JSON.parse()
no admite comas finales// ambos lanzarán un SyntaxError
JSON.parse('[1, 2, 3, 4, ]');
JSON.parse('{"foo" : 1, }');
Especificación | Estado | Comentario |
---|---|---|
{{SpecName('ES5.1', '#sec-15.12.2', 'JSON.parse')}} | {{Spec2('ES5.1')}} | Definición inicial. Implementado en JavaScript 1.7. |
{{SpecName('ES6', '#sec-json.parse', 'JSON.parse')}} | {{Spec2('ES6')}} |
|
{{SpecName('ESDraft', '#sec-json.parse', 'JSON.parse')}} | {{Spec2('ESDraft')}} |
{{ CompatibilityTable() }}
Característica | Chrome | Firefox (Gecko) | Internet Explorer | Opera | Safari |
---|---|---|---|---|---|
Soporte básico | {{ CompatVersionUnknown() }} | {{ CompatGeckoDesktop("1.9.1") }} | 8.0 | 10.5 | 4.0 |
Característica | Android | Chrome para Android | Firefox Mobile (Gecko) | IE Mobile | Opera Mobile | Safari Mobile |
---|---|---|---|---|---|---|
Soporte básico | {{ CompatVersionUnknown() }} | {{ CompatVersionUnknown() }} | {{ CompatGeckoMobile("1.0") }} | {{ CompatVersionUnknown() }} | {{ CompatVersionUnknown() }} | {{ CompatVersionUnknown() }} |
Based on Kangax's compat table.
Comenzando con Gecko 29 {{geckoRelease("29")}}, unas cadenas JSON malformadas producen un mensaje de error más detallado que contiene el número de línea y columna que provocó el error de parsing. Esto es útil cuando se está haciendo debug de un JSON grande.
JSON.parse('[1, 2, 3,]') // SyntaxError: JSON.parse: unexpected character at // line 1 column 10 of the JSON data