将javascript数组转换为特定的json格式

时间:2015-10-29 21:31:34

标签: json

我有这个JSON.stringify(数组)结果:[“id:1x,价格:150”,“id:2x,价格:200”]我必须以类似于此的json格式转换它(它将被发送到PHP): [{ “ID”: “1X” “价格”:150 }, { “ID”: “2X”, “价格”:200 }]

请帮忙。

2 个答案:

答案 0 :(得分:2)

您可以在使用JSON.stringify之前转换数据结构,例如,您可以将数据转换为对象列表,如下所示:

var strItems =  ["id:1x,price:150", "id:2x,price:200"];
var objItems = [];

for (var i = 0; i < strItems.length; i++) {
    var pairs = strItems[i].split(","); 
    objItems.push({
        id: pairs[0].split(':')[1],
        price: parseInt(pairs[1].split(':')[1])
        });
}

在致电JSON.stringify以获得您之后的结果之前:

var json = JSON.stringify(objItems);
console.log(json);

答案 1 :(得分:0)

JSON.stringify(array)仅在图层上执行,但您可以使用JVE999在this post上编写的此函数更改stringify函数以适用于多个图层:

(function(){
    // Convert array to object
    var convArrToObj = function(array){
        var thisEleObj = new Object();
        if(typeof array == "object"){
            for(var i in array){
                var thisEle = convArrToObj(array[i]);
                thisEleObj[i] = thisEle;
            }
        }else {
            thisEleObj = array;
        }
        return thisEleObj;
    };
    var oldJSONStringify = JSON.stringify;
    JSON.stringify = function(input){
        if(oldJSONStringify(input) == '[]')
            return oldJSONStringify(convArrToObj(input));
        else
            return oldJSONStringify(input);
    };
})();

一旦声明了这一点,就可以调用JSON.stringify(array)