Javascript 数组不是数组
我在跑步Javascript 数组不是数组,javascript,json,Javascript,Json,我在跑步 var n = []; jQuery.toJSON( n ); 在一个页面上,我看到了“[]”,在另一个页面上看到了“[]”。在这两个页面上,我都使用一个 在FirefoxDOM中,我可以看到两个数组都有相同的函数名,但是。。。不同的: all b(B, A) any j(B, A) all all(iterator, context) any any(iterator, context) 我想在我的脚本之前有一些Array.prototype函数
var n = [];
jQuery.toJSON( n );
在一个页面上,我看到了“[]”
,在另一个页面上看到了“[]”
。在这两个页面上,我都使用一个
在FirefoxDOM中,我可以看到两个数组都有相同的函数名,但是。。。不同的:
all b(B, A)
any j(B, A)
all all(iterator, context)
any any(iterator, context)
我想在我的脚本之前有一些Array.prototype函数。这会导致阵列不同。我无法更改其他代码,我必须以某种方式处理此问题
我尝试了
newarray()
和jQuery.makeArray(n)
,结果仍然相同。实际上,我并不关心数组是否相等,但是如何获得相同的JSON代码呢?如果数组中有字符串,情况会变得更糟:“[\'a\”,“\'b\”]”
额外的引号是由
Array.prototype.toJSON
由原型库和其他库定义的函数。此函数由jQuery.toJSON
(或JSON.Stringify()调用)并生成额外的引号。如果你愿意
delete Array.prototype.toJSON // remove toJSON for all Arrays
//or
delete n.toJSON // remove toJSON for specific Array
在执行jQuery.toJSON
之前,这应该是可行的
另一个建议是,最好使用
JSON.stringify(object)
而不是jQuery.toJSON
。大多数浏览器本机支持它。如果您想确保它在任何地方都有效,请使用,它是JSON.stringify()
函数的基础
有关JSON.stringify(),请参阅以获取更多信息。额外的引号是由
Array.prototype.toJSON
由原型库和其他库定义的函数。此函数由jQuery.toJSON
(或JSON.Stringify()调用)并生成额外的引号。如果你愿意
delete Array.prototype.toJSON // remove toJSON for all Arrays
//or
delete n.toJSON // remove toJSON for specific Array
在执行jQuery.toJSON
之前,这应该是可行的
另一个建议是,最好使用
JSON.stringify(object)
而不是jQuery.toJSON
。大多数浏览器本机支持它。如果您想确保它在任何地方都有效,请使用,它是JSON.stringify()
函数的基础
有关JSON.stringify(),请参阅了解更多信息。我的恶意攻击是:
function cleanJson(s)
{
if (s[0] == '"')
{
s = s.substring(1, s.length-1).replace(/\\"/g,'"');
}
return s;
}
我做了这项工作,但我仍在寻找一个更干净的解决方案。我对此的拙劣做法是:
function cleanJson(s)
{
if (s[0] == '"')
{
s = s.substring(1, s.length-1).replace(/\\"/g,'"');
}
return s;
}
完成了任务,但我仍在寻找一个更干净的解决方案。有没有可能您两次将其转换为JSON?您可以尝试一下console.dir(n)并查看两者是否有差异?@Gumbo我不知道如果我只运行
jQuery.toJSON([])
@ustun是的,我在第二个框中显示了差异。相同的函数名,但不同的实现。有没有可能您两次将其转换为JSON?能否尝试console.dir(n)并查看两者是否有任何差异?@Gumbo我不知道如果我只是运行jQuery.toJSON([])
@ustun是的,我在第二个框中显示了差异。相同的函数名,但不同的实现。我做到了,同样的问题。谢谢你的主意!在什么browser+情况下,你会得到额外的引号?嗯,JSON是用于对象的,而不是用于数组(虽然从技术上讲它们也是对象)。如果您想要JSON字符串化数组,您应该首先从该数组创建一个对象,thén stringify。。。你能试试吗?JSON.stringify({a:[“test”]})代码>=>。对象正常,但数组仍然错误。谢谢,我找到了一个更好的解决方案:n.toJSON=null
的工作方式相同,但不会影响其他数组。也许你可以把它加到你的答案上。我也这么做了,同样的问题。谢谢你的主意!在什么browser+情况下,你会得到额外的引号?嗯,JSON是用于对象的,而不是用于数组(虽然从技术上讲它们也是对象)。如果您想要JSON字符串化数组,您应该首先从该数组创建一个对象,thén stringify。。。你能试试吗?JSON.stringify({a:[“test”]})代码>=>。对象正常,但数组仍然错误。谢谢,我找到了一个更好的解决方案:n.toJSON=null
的工作方式相同,但不会影响其他数组。也许你可以把它加到你的答案上。