JSON字符串忽略数组中的一些值

JSON stringify ignore some values in array

本文关键字:数组 字符串 JSON      更新时间:2024-06-23

数组看起来像这样:

["1","2",R:"aviv",remove:function]0:"1"1:"2"R: "测试"长度:2__proto__:数组[0]

当我对这个数组使用JSON.stringify()时,我得到:

["1","2"]

这是因为数组长度为2,请问我该如何解决?我需要用这个数组将ajax发布到php脚本中,并且我丢失了一些nesesarry数据。

谢谢,Aviv

["1", "2", R: "aviv", remove: function]不表示数组-这是无效语法。

无论如何,假设代码旨在将创建的数组描述为:

arr = ["1", "2"]
arr.R = "aviv"
arr.remove = function () {}

然后Rremove属性都将使用JSON.stringify进行序列化,因为它将数组映射到JSON数组。

虽然[JavaScript]数组是对象的专业化,特别是它们支持"expando-properties",但JSON数组和JSON对象是不同的数据类型。

因此,JSON数组没有映射键的方法,也不会映射其他属性:实际实现将在数组索引[0,arr.length)上迭代,因为它将数组映射到JSON数组。

要将额外的键映射为JSON对象,使用[JavaScript]对象(而不是数组)开始,该对象将映射到JSON对象:

notArray = { 0: "1", 1: "2", R: "aviv", remove: function () {} }

当然,也许JSON应该有一个更深层次的结构:记住上面的映射规则。


以下是两种情况的示例输出(请注意,function没有映射):

JSON.stringify(arr)       // -> ["1","2"]
JSON.stringify(notArray)  // -> {"0":"1","1":"2","R":"aviv"}