2014-09-10 48 views
-1

我有一個JSON字符串,它看起來像這樣:如何大的JSON字符串轉換成數組使用jQuery

[ 
    { 
     "id": "acbPreviewCell", 
     "width": 80 
    }, 
    { 
     "id": "advName", 
     "width": 170 
    }, 
    { 
     "id": "adHeadline", 
     "width": 150 
    }, 
    { 
     "id": "adSize", 
     "width": 150 
    }, 
    { 
     "id": "adProduct", 
     "width": 150 
    }, 
    { 
     "id": "adCategory", 
     "width": 150 
    }, 
    { 
     "id": "adSection", 
     "width": 150 
    }, 
    { 
     "id": "adColor", 
     "width": 150 
    }, 
    { 
     "id": "adTags", 
     "width": 150 
    }, 
    { 
     "id": "adRegions", 
     "width": 150 
    }, 
    { 
     "id": "adStatus", 
     "width": 150 
    }, 
    { 
     "id": "adCreated", 
     "width": 150 
    }, 
    { 
     "id": "adBookingNb", 
     "width": 150 
    }, 
    { 
     "id": "adPickup", 
     "width": 150 
    }, 
    { 
     "id": "folioMeta", 
     "width": 150 
    } 
] 

爲了幫助進一步說明,這些條目是表頭的ID,與沿表格標題的寬度。我在應用程序中使用它,以便我可以記住用戶設置的自定義列寬。

我想將此JSON字符串分解爲一個javascript數組,以便我可以輕鬆訪問每個ID及其寬度。

任何幫助將被讚賞將其設置爲一個數組,然後將其分解,以訪問ID和寬度。謝謝!

+1

在這裏看到:http://stackoverflow.com/questions/23310353/how-to-read-json-result-in-jquery/ 23310376#23310376 – 2014-09-10 14:46:21

+6

字符串存儲在哪裏?它在語法上已經*是一個JavaScript數組。 – Pointy 2014-09-10 14:46:22

+1

'var myarray = JSON.parse(myjsonString)' – 2014-09-10 14:47:38

回答

2

如果你想將它轉換爲array可以使用built-in JSON object解析它:JSON.parse(yourString)

但是,如果你想輕鬆地通過ID訪問值,你就必須真正將其轉換爲object

var originalData = JSON.parse(yourString); 
var parsedData = {}; 
for (var i = 0, l = originalData.length; i < l; i++) { 
    parsedData[originalData[i].id] = originalData[i].width; 
} 

// now you can easily access the wanted widths 
var acbPreviewCellWidth = parsedData['acbPreviewCellWidth']; 
0

理論上,它已經存儲爲一個數組。但是,如果您想解析JSON對象以確保其正確形成,請使用var jsonArray = JSON.parse(jsonString);不需要jQuery。

0

你可能想通過所有的值來獲得使用AJAX的JSON,然後循環它們lushing到陣列中的JavaScript,或者你可以簡單地調用var objArr = $.parseJSON('file');得到所有對象的數組。如果你想提取這些值,你只需使用objArr[index].val就可以得到它們。

使用這個,你可以調用例如像這樣的第一個對象值。

var id = objArr[0].id; 
var width = objArr[0].width; 
0

嘗試

function filtered(v) { 
    return $.map(json, function(value) { 
    return value.id === v ? value : null 
    })[0]; 
}; 

使用

filtered("folioMeta"); // do stuff with "folioMeta" object within array 
filtered("folioMeta").id // `"folioMeta"` 
filtered("folioMeta").width // `150` 
1

有人其他人提到了哈希映射,這幾乎是我猜你需要的。也就是說,你想快速訪問ID,如array['advName']給你的寬度。

你可以通過值磨你得到像這樣:

a = [ 
    { 
     "id": "acbPreviewCell", 
     "width": 80 
    }, 
    { 
     "id": "advName", 
     "width": 170 
    }, 
    { 
     "id": "adHeadline", 
     "width": 150 
    } 
]; 

function rewrite_array(arr){ 
    new_arr = new Array(); 
    for(i=0; i<a.length; i++){ 
     new_arr[arr[i]['id']] = arr[i]['width']; 
    } 
    return new_arr; 
} 

n = rewrite_array(a); 
console.log(n["advName"]); 
console.log(a[1]['width']);