我正在使用node.js从JSON中的外部API接收数百个数据对象,如下所示:
[
{
"ID": "6548532",
"Status": "active",
"Updated": "2014-11-24T07:32:04-07:00",
"created": "2014-09-15T19:42:37-07:00",
"URL": "www.example.com",
"Categories": [
"cat-a",
"cat-b"
],
"Price": "10.00"
},
{
"ID": "8558455",
"Status": "inactive",
"Updated": "2014-10-24T07:32:04-07:00",
"created": "2014-09-15T19:42:37-07:00",
"URL": "www.example.com",
"Categories": [
"cat-c",
"cat-r"
],
"Price": "20.00"
}
....
]
我想将对象分开,以便我只能将"Status": "active"
的对象写入我的数据库。我知道在使用JSON.parse
之前我可以使用字符串操作来执行此操作但是我想知道是否有更好的方法将JSON文件拆分为它包含的对象并将它们保留在一个数组中然后我可以处理
答案 0 :(得分:4)
将JSON解析为Javascript对象后,您可以使用filter函数删除"Status"
不等于"active"
的元素:
var responseArray = JSON.parse(responseData),
filteredArray = responseArray.filter(
function (obj) {
return obj.Status == "active";
});
// Use filteredArray
答案 1 :(得分:3)
在使用JSON.parse
解析之前,不应该对此使用字符串操作,也不应对其执行任何操作,除非您想编写自己的完整JSON解析逻辑。
只需解析它,然后删除没有Status: "active"
的对象:
var objects = JSON.parse(JSON_data);
var filtered_objects = objects.filter(function(el) {return (el["Status"] == "active");});
答案 2 :(得分:2)
您应该能够对JSON.parse
返回的数组使用Array.prototype.filter
:
var objects = JSON.parse(input);
objects.filter(function (el) {
return el.status === "active";
});