我有一个类似
的数组["categories", 1, "categories", 2, "categories", 3]
我想将此数组转换为JSON格式,如
{"categories":1,"categories":2, "categories":3}
答案 0 :(得分:1)
您可以使用以下命令将数组转换为JSON:
var a = ["categories", 1, "categories", 2, "categories", 3];
var json = JSON.stringify(a);
// json will be: "["categories",1,"categories",2,"categories",3]"
您的问题中的JSON字符串不是数组,而是一个对象。正如Pranav在他的评论中指出的那样,它是一个无效的对象符号,因为对象的属性必须是唯一的。
答案 1 :(得分:1)
在这种情况下,我们必须通过{"categories": [1,2,3]}
。为此,我们必须创建一个值数组并创建一个JSON数据{"categories": [1,2,3]}
。
这解决了通过ajax发布相同字段的多个值的问题,如复选框。
答案 2 :(得分:0)
如果你的意思是
["categories1", 1, "categories2", 2, "categories3", 3]
每个键都不同,那么你可以选择
var a = ["categories1", 1, "categories2", 2, "categories2", 3],
b = {}, len = a.length;
for(i=0; i<len; i+=2){
var key = a[i], val = a[i+1];
b[key] = val
}
// b should be {"categories1":1,"categories2":2, "categories3":3}
如果没有,就像@Pranav C Balan所说,你不能在一个对象中有三个相同的键,它们只会覆盖以前的那些;
你可能还需要这个underscore方法,非常方便
_.object(['moe', 'larry', 'curly'], [30, 40, 50]);
=> {moe: 30, larry: 40, curly: 50}
_.object([['moe', 30], ['larry', 40], ['curly', 50]]);
=> {moe: 30, larry: 40, curly: 50}