2014-09-10 72 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']);