簡體   English   中英

在Javascript中將Array對象轉換為Json

[英]Convert Array object into Json in Javascript

我怎么能轉換這個:

var expenseList = [[1,"Beverages"],
                   [2,"Condiments" ],
                    [3,"Confections" ],
                   [4,"Dairy Products" ],
                   [5,"Grains/Cereals" ],
                   [6,"Meat/Poultry" ],
                    [7,"Produce" ],
                   [8,"Seafood" ]];

進入這個:

output = [
               { value: 1, text: "Beverages" },
               { value: 2, text: "Condiments" },
               { value: 3, text: "Confections" },
               { value: 4, text: "Dairy Products" },
               { value: 5, text: "Grains/Cereals" },
               { value: 6, text: "Meat/Poultry" },
               { value: 7, text: "Produce" },
               { value: 8, text: "Seafood" }
        ];

第一個數據源可以作為輸入,第二個是所需的輸出。 我嘗試使用循環將數組轉換為一種字符串,然后將字符串解析為json,但Json.pasre在那里拋出錯誤。

var list = '';
for (var i = 0; i < expenseList.length; i++) {
        var showText = expenseList[i][1].replace('"', '\\"');
        var key = expenseList[i][0];

    list = '{ value: ' + key + ', text: "' + value + '"},' + list;
}

    list = '[' + list.substr(0, list.length - 1) + ']';
    var bindList;
    bindList = JSON.parse(list);

試試吧

var output = expenseList.map(function(val){
  return { value: val[0], text: val[1] }
}); 

您可以使用Array.prototype.map

var list = expenseList.map(function(x) {
  return {
     value: x[0],
     text: x[1]
  };
});

然后轉為JSON,你可以使用

var json = JSON.stringify(output);

這是一個替代解決方案,以您嘗試的方式構建陣列,但更正確:

var expenseList = [[1,"Beverages"],
                   [2,"Condiments" ],
                   [3,"Confections" ],
                   [4,"Dairy Products" ],
                   [5,"Grains/Cereals" ],
                   [6,"Meat/Poultry" ],
                   [7,"Produce" ],
                   [8,"Seafood" ]];

var list = [];
for (var i = 0; i < expenseList.length; i++) {
    var val = expenseList[i][0];    
    var txt = expenseList[i][1];

    list.push({value: val, text: txt});
}

console.log(list);

如果您不希望數組和哈希對象滿足您的要求,請使用此方法。

loadash使用。

_.zipObject(_.map(expenseList,0),_.map(expenseList,1))

輸出將是

{1: "Beverages", 2: "Condiments", 3: "Confections", 4: "Dairy Products", 5: "Grains/Cereals", 6: "Meat/Poultry", 7: "Produce", 8: "Seafood"}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM