Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

273
Vistas
¿Por qué JSON. parse (['1234']) devuelve 1234?

Tengo problemas para comprender el comportamiento de JSON.parse . JSON.parse debería funcionar solo para cadenas. Pero parece funcionar para una matriz que contiene solo una cadena (incluso entre comillas simples), si la cadena contiene solo números.

 JSON.parse(['1234']) // => 1234 JSON.parse(['1234as']) // => throws error JSON.parse(['123', '123']) // => throws error
over 4 years ago · Santiago Trujillo
3 Respuestas
Responde la pregunta

0

Como ha señalado, JSON.parse() espera una cadena y no una matriz. Sin embargo, cuando se le da una matriz o cualquier otro valor que no sea una cadena, el método lo forzará automáticamente a una cadena y procederá en lugar de lanzarlo inmediatamente. De la especificación :

  1. Deje que JText sea ToString (texto).
  2. ...

La representación de cadena de una matriz consta de sus valores, delimitados por comas. Asi que

  • String(['1234']) devuelve '1234' ,
  • String(['1234as']) devuelve '1234as' y
  • String(['123', '123']) devuelve '123,123' .

Tenga en cuenta que los valores de cadena no se vuelven a citar. Esto significa que ['1234'] y [1234] se convierten en la misma cadena, '1234' .

Así que lo que realmente estás haciendo es:

 JSON.parse('1234') JSON.parse('1234as') JSON.parse('123,123')

1234as y 123,123 no son JSON válidos, por lo que se lanza JSON.parse() en ambos casos. (Para empezar, la primera no es una sintaxis legal de JavaScript, y la última contiene un operador de coma que no pertenece).

1234 , por otro lado, es un número literal y, por lo tanto, JSON válido, que se representa a sí mismo. Y es por eso que JSON.parse('1234') (y por extensión JSON.parse(['1234']) ) devuelve el valor numérico 1234.

over 4 years ago · Santiago Trujillo Denunciar

0

Si JSON.parse no obtiene una cadena, primero convertirá la entrada en una cadena.

 ["1234"].toString() // "1234" ["1234as"].toString() // "1324as" ["123","123"].toString() // "123,123"

De todas esas salidas, solo sabe cómo analizar "1234".

over 4 years ago · Santiago Trujillo Denunciar

0

Dos cosas a tener en cuenta aquí:

1) JSON.parse convierte el argumento en una cadena (consulte el primer paso del algoritmo en la especificación). Su entrada da como resultado lo siguiente:

 ['1234'] // String 1234 ['1234as'] // String 1234as ['123', '123'] // String 123,123

2) Las especificaciones en json.org establecen que:

[...] Un valor puede ser una cadena entre comillas dobles, o un número, o verdadero, falso o nulo, o un objeto o una matriz. Estas estructuras se pueden anidar.

Entonces tenemos:

 JSON.parse(['1234']) // Becomes JSON.parse("1234") // 1234 could be parsed as a number // Result is Number 1234 JSON.parse(['1234as']) // Becomes JSON.parse("1234as") // 1234as cannot be parsed as a number/true/false/null // 1234as cannot be parsed as a string/object/array either // Throws error (complains about the "a") JSON.parse(['123', '123']) // Becomes JSON.parse("123,123") // 123 could be parsed as a number but then the comma is unexpected // Throws error (complains about the ",")
over 4 years ago · Santiago Trujillo Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda