JavaScript中的JSON转换

4
我将尝试在Javascript中将一个多维数组变量转换为JSON字符串。
//i'm using functions from http://www.json.org/json2.js

var info = new Array(max);
for (var i=0; i<max; i++) {
  var coordinate = [25 , 32];
  info[i] = coordinate;
}
var result = JSON.stringify(info);

但是结果看起来根本不像JSON字符串。我在这里做错了什么?

6
那么结果看起来像什么? - workmad3
2个回答

9
你和其他人一样,在JSON规范上产生了困惑。你拥有的字符串是一个有效的JSON数组。
来自json.org:
JSON基于两个结构:
- 一组名称/值对。在各种语言中,它被实现为对象、记录、结构、字典、哈希表、键控列表或关联数组。 - 值的有序列表。在大多数语言中,它被实现为数组、向量、列表或序列。
你的示例匹配第二个结构 - 有序值列表。
还来自json.org:
数组是一个有序的值集合。一个数组以左括号[开始,右括号]结束。值由逗号分隔。
值可以是双引号中的字符串,数字,true或false,null,对象或数组。这些结构可以嵌套。
这没什么好说的。你得到了一个有效的JSON数组。玩得开心。但是为了彻底讨厌:

来自RFC

RFC 4627, Section 2

2) JSON Grammar

A JSON text is a sequence of tokens. The set of tokens includes six structural characters, strings, numbers, and three literal names.

A JSON text is a serialized object or array.

  JSON-text = object / array

只是想指出,这已经被RFC 7159所取代。JSON文本不再需要是对象或数组。https://tools.ietf.org/html/rfc7159#appendix-A - stewSquared

6
我看到的结果是这样的:
[[25,32],[25,32],[25,32],[25,32],[25,32],[25,32],[25,32],[25,32],[25,32],[25,32]]

就我所知,这个问题没有问题。可能看起来有点奇怪,但这主要是因为JSON在对象方面被广泛使用,而对象的表示方式略有不同。您可以使用eval函数将字符串转化为数组结构,所以在我看来这很好。


3
一个数组是一个有序的值的集合,以 [ (左方括号)开始,以 ] (右方括号)结束。值之间用逗号分隔。因此,对我来说,它看起来是一个正确的二维数组的 JSON 表示。 - ylebre
说真的,这不是 JSON - 它可能是 JSON 对象中属性的有效值,但按照现有的写法,它不是有效的 JSON。你需要重新阅读规范。 - annakata
4
@annakata,这显然是有效的JSON。我不确定有谁会不同意。请在json.org(主页)上查看它。 - Kenan Banks
2
@ylebre - 我认为混淆的原因是一些人不相信数组可以成为顶级 JSON 文本(使用 RFC 中的术语)。 - Kenan Banks
5
RFC指出,数组是合法的顶级JSON文本。http://www.ietf.org/rfc/rfc4627.txt?number=4627 - Dustin Getz
显示剩余4条评论

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接