使用JSON解析/字符串处理数据
问题描述:
我有一个关于使用Javascript和stringify /解析操纵JSON数据的问题。在下面的例子中,我创建了一个JSON字符串,然后使用parse将其转换回一个对象。这样做后,我想要做的是删除一个具有特定ID的项目,我唯一能找到的方法是遍历整个数组,并在找到匹配项时从数组中删除元素。这似乎不是很有效。有一个更好的方法吗?使用JSON解析/字符串处理数据
var employees = [];
//build the array
for (var i=0; i < 10; i++) {
var player = { "id": i, "salary": i*1000000 };
employees.push(player);
}
json_employees = JSON.stringify({employees: employees}); //convert to json string
alert(json_employees); //display the new string
var obj = JSON.parse(json_employees); //convert back to a Javascript object
for (var j=0; j < obj.employees.length; j++) { // loop through the array
if (obj.employees[j].id === 5) // is it the employee with id 5?
obj.employees.splice(j, 1); // remove the fifth item
}
json_modified_employees = JSON.stringify({employees: obj.employees}); //convert back to json string
alert(json_modified_employees); //display the new string
答
您可以在员工存储中的对象,他们的id
的关键,是这样的:
// create a store object
var employees = {};
//build the array
for (var i=0; i < 10; i++) {
var player = { "id": i, "salary": i*1000000 };
// add item to store object with a key of 'pk' + i
employees['pk' + i] = player;
}
json_employees = JSON.stringify({employees: employees}); //convert to json string
alert(json_employees); //display the new string
var obj = JSON.parse(json_employees); //convert back to a Javascript object
// remove the required item (in this case number 5)
delete obj.employees['pk' + 5];
json_modified_employees = JSON.stringify({employees: obj.employees}); //convert back to json string
alert(json_modified_employees); //display the new string
然后,如果您想遍历你的员工,你会
for (var key in employees) {
if (employees.hasOwnProperty(key)) {
alert(employees[key].id)
}
}
+0
ID不会必须匹配数组的索引。感谢所有伟大的答案,尤其是Dve! – cgdeveloper 2013-02-11 18:46:55
在这种情况下,您会按照ID的顺序将员工推到数组上。这在你的实际代码中也是如此吗? – 2013-02-11 17:38:41
没有循环?没有......好吧......你可以用正则表达式来破解字符串,但是这可能比遍历数组更糟...... – Tivie 2013-02-11 17:38:45
这与JSON有什么关系?你有同样的问题试图找到原来的'员工'阵列中的项目,是吗? – Barmar 2013-02-11 17:47:37