为什么JSON.parse('[123]')返回123?

时间:2013-07-19 05:50:45

标签: javascript json node.js

我不明白为什么JSON.parse('[123]')会返回一个整数123?它不应该返回一个数组[123]

这是fiddle

如何在JSON.parse()之后获得单个整数的数组?

2 个答案:

答案 0 :(得分:10)

一个数组,只有在打印时才会打印括号。

看看这个有两个项目:http://jsfiddle.net/2z355/4/

它打印为123,456,也没有括号。

el.innerHTML = JSON.parse('[123]');  // The one item: 123
el.innerHTML = JSON.parse('[123]')[0]; // First item of array: 123
el.innerHTML = JSON.parse('[123,456]') // Both values: 123,456;
el.innerHTML = JSON.parse('[123,456]')[0] // First item: 123;

el.innerHTML = typeof JSON.parse('123'); // number
el.innerHTML = typeof JSON.parse('[123]'); // object *)

我原本期望'数组',但事实证明它是一个对象。也许我最近一直在PHPing太多。然而,这不是一个数字。 :) 幸运的是下一行工作(感谢icktoofay)。

el.innerHTML = JSON.parse('[123]') instanceof Array; // true

答案 1 :(得分:6)

它是一个整数的数组;只是JavaScript的一个怪癖使得数组的字符串表示形式是由逗号连接的元素的字符串表示,没有[]

你知道这是一个数组,因为

  1. result instanceof Array
  2. JSON.stringify(result) === '[123]'