将json拆分为单独的对象

时间:2015-01-21 16:23:45

标签: json node.js

我正在使用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文件拆分为它包含的对象并将它们保留在一个数组中然后我可以处理

3 个答案:

答案 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";
});