2015-05-26 45 views
0

我以JSON的形式從源獲取數據。比方說,JSON看起來像這樣如何將JSON轉換爲對象字面值?

var data = [ 
    {"city" : "Bangalore", "population" : "2460832"} 
] 

我會通過這個數據對象爲劍道網格,我將使用出的現成的功能,以數字的格式。所以,我需要相同的JSON作爲對象字面看起來像這樣

var data = [{city : "Bangalore", population: 2460832}] 

是否有任何庫,功能或簡單的方法來實現這一目標?

+1

如果它有一個衆所周知的結構,只需使用'parseInt'屬性! –

+3

「JSON」不是JSON。它是JavaScript。您擁有的唯一對象文字在兩個版本的代碼中都是相同的。唯一的區別是你用一個數字文字替換了一個字符串文字。 – Quentin

+0

但最終的結果應該像一個對象文字,以便我可以在任何我想要的地方重複使用它。我不想重複應用parseInt。 –

回答

2

您可以iterate over the Objects in the Array和修改每個​​屬性,從字符串轉換其值設置爲一個號碼與parseInt() or similar

var data = [ 
    {"city" : "Bangalore", "population" : "2460832"} 
]; 

data.forEach(function (entry) { 
    entry.population = parseInt(entry.population, 10); 
}); 

console.log(data[0].population);  // 2460832 
console.log(typeof data[0].population); // 'number' 
+0

我應用了這個解決方案,它工作正常。但是我仍然不舒服,不得不在需要的地方應用它。我希望找到一個開箱即用的解決方案,我只能做一次,然後繼續重複使用這些數據。但是,謝謝。我有我現在需要的。 –

0

可以JSON轉換成一個對象字面通過以下這種想法:

(function() { 

    var json = 
    [ 
    { 
     "id": 101, 
     "title": 'title 1' 
    }, 
    { 
     "id": 103, 
     "title": 'title 3' 
    }, 
    { 
     "id": 104, 
     "title": 'title 4' 
    } 
    ]; 

    var result = {}; 

    for (var key in json) { 
    var json_temp = {} 
    json_temp.title = json[key].title; 
    result[json[key].id] = json_temp; 
    } 

    console.log(result); 

})(); 

輸出將是:

Object { 
    101: Object { 
    title: "title 1" 
    } 
    102: Object { 
    title: "title 2" 
    } 
    103: Object { 
    title: "title 3" 
    } 
}