3

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

这是小提琴

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

4

2 回答 2

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
于 2013-07-19T05:54:27.587 回答
6

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

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

  1. result instanceof Array
  2. JSON.stringify(result) === '[123]'
于 2013-07-19T05:53:41.317 回答