我有一个如下所示的JSON字符串:
[
{
"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和宽度。谢谢!
答案 0 :(得分: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'];
答案 1 :(得分: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']);
答案 2 :(得分:0)
理论上,它已经存储为数组。但是,如果要解析JSON对象以确保它正确形成,请使用var jsonArray = JSON.parse(jsonString);
不需要jQuery。
答案 3 :(得分:0)
答案 4 :(得分:0)
您可能希望使用ajax获取JSON,然后遍历所有值,将它们放到javascript中的数组中,或者只需调用var objArr = $.parseJSON('file');
即可获取所有对象的数组。如果你想获取这些值,你只需使用objArr[index].val
来获取它们。
使用此功能,您可以调用例如第一个对象值。
var id = objArr[0].id;
var width = objArr[0].width;
答案 5 :(得分: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`