Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

270
Views
¿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 answers
Answer question

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 Report

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 Report

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 Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!