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