1

I have this JSON.stringify(array) result: ["id:1x,price:150","id:2x,price:200"] and I have to convert it in a json format similar to this (it would be sent to php): [{ "id":"1x", "price":150 }, { "id":"2x", "price":200 }]

Please help.

Iram
  • 45
  • 5

2 Answers2

2

You can convert the structure of your data before using JSON.stringify, for example you can convert the data to a list of objects like so:

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])
        });
}

Before calling JSON.stringify to get the result you're after:

var json = JSON.stringify(objItems);
console.log(json);
Anthony Blackshaw
  • 2,549
  • 2
  • 16
  • 20
0

JSON.stringify(array) only does on layer, but you can change the stringify function to work for multiple layers with this function written by JVE999 on this post:

(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);
    };
})();

Once you have declared this, then you can call JSON.stringify(array)

Community
  • 1
  • 1
fanfavorite
  • 5,128
  • 1
  • 31
  • 58