繁体   English   中英

JavaScript将数组转换为JSON格式

[英]JavaScript convert array to JSON format

我有一个像

["categories", 1, "categories", 2, "categories", 3]

我想将此数组转换为JSON格式,例如

{"categories":1,"categories":2, "categories":3}

您可以使用以下方法将数组转换为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在其评论中指出的那样,它是无效的对象表示法,因为对象的属性必须唯一。

在这种情况下,我们将必须经过{"categories": [1,2,3]} 为此,我们必须创建一个值数组并创建一个JSON数据{"categories": [1,2,3]}

这解决了通过ajax发布同一字段的多个值(如复选框)的问题。

如果你是这个意思

["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所说的那样,您不能在一个对象中拥有三个相同的键,它们只会覆盖先前的键;

您可能还需要此下划线方法,非常方便

_.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}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM