Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/463.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript stringify将值数组转换为字符串_Javascript_Json - Fatal编程技术网

Javascript stringify将值数组转换为字符串

Javascript stringify将值数组转换为字符串,javascript,json,Javascript,Json,我有一个JS对象 { aString:[aNumber, aURL] } stringify()返回 我认为有效的JSON可以将数组作为值。我可以让stringify在不将数组转换为字符串的情况下返回JSON字符串吗?基本上,我需要将整个JS对象直接转换为一个字符串,而无需任何修改 有更好的方法吗?我一直在四处寻找,但每个人都建议如果我想让对象字符串化,就使用JSON.stringify,但没有人提出这个问题 编辑:感谢您的快速回复。这里是我如何创建我的JS对象,请让我知道如果我搞砸了

我有一个JS对象

{
    aString:[aNumber, aURL]
}
stringify()返回

我认为有效的JSON可以将数组作为值。我可以让stringify在不将数组转换为字符串的情况下返回JSON字符串吗?基本上,我需要将整个JS对象直接转换为一个字符串,而无需任何修改

有更好的方法吗?我一直在四处寻找,但每个人都建议如果我想让对象字符串化,就使用JSON.stringify,但没有人提出这个问题

编辑:感谢您的快速回复。这里是我如何创建我的JS对象,请让我知道如果我搞砸了,以及如何

cookie = {};
// productURL is a string, timer is a number, imageSrc is a URL string
cookie[productURL] = [timer, imageSrc];
// then, I just stringified cookie
newCookie = JSON.stringify(cookie);

如果它也是相关的,我将实际cookie的值设置为结果JSON字符串,以便在另一组函数中访问它。设置cookie的值确实会对其本身进行一些URI编码,但实际上我也在Chrome控制台中获取了newCookie的值,它还以字符串形式返回数组。

根据您的描述,这不是应该发生的事情

如果您有这样的代码:

var obj = {
    aString:[123, "test"]
}

document.getElementById("out").value = JSON.stringify(obj);
它将生成预期的json:

{"aString":[123,"test"]}
也看到

为了生成输出,原始对象必须看起来像:

var obj = {
    aString:"[123, \"test\"]"
}

如果您试图字符串化的对象具有
toJSON
函数,则该函数将由
JSON.stringify
调用。很可能您有一个正在添加Array.prototype.toJSON的外部库

例如,Prototype JS的旧版本(1.6)将“方便地”为您添加它

原型1.6.1

alert(JSON.stringify([1,2,3])

听起来像是
[aNumber,aURL]
已经是一个JSON字符串了,所以你要对它进行两次字符串化。展示你是如何创建JS对象的。我在编辑中添加了一些注释。非常感谢。这太完美了!非常感谢。我已经验证了你的假设,它确实是真的。我对源代码没有100%的控制权或知识,因为它是客户的站点,所以我不知道。现在我知道了:)我会告诉他们升级prototype.js库。请记住,prototype.js的上一次更新大约是一年前,上一次更新大约是两年前。您可以在此处查看修订历史记录:。在他们的github页面上似乎有一些最近的提交,但如果代码严重依赖于原型,则可能值得查看另一个更积极开发的库。谢谢您的建议!我会向客户建议,因为prototype.js可能会给他们和他们的合作伙伴带来未来的麻烦。但最终这将是他们的决定。。。我不是在建设他们的网站,只是在实现一个广告平台。
var obj = {
    aString:"[123, \"test\"]"
}