在PHP中过滤JSON数据

时间:2016-04-14 12:43:54

标签: php arrays json

我有一个API的输出,由以下元素列表组成:

{
  "data": [
  {
    "url": "https://parktheater.yesplan.nl/api/event/7036825857-1426512948",
    "id": "7036825857-1426512948",
    "owner": {
    "url": "https://parktheater.yesplan.nl/api/user/365891073-1365159547",
    "id": "365891073-1365159547",
    "name": "Klaas Seelen"
  },
  "name": "Ernst, Bobbie en de rest",
  "group": {
    "url": "https://parktheater.yesplan.nl/api/group/7036832513-1426512948",
    "id": "7036832513-1426512948",
    "name": "Wij willen water show",
    "_type": "group"
  },
  "starttime": "2016-05-01T16:00:00+02:00",
  "endtime": "2016-05-01T18:00:00+02:00",
  "locations": [
    {
      "url": "https://parktheater.yesplan.nl/api/location/383044097-1365160415",
      "id": "383044097-1365160415",
      "name": "Grote Zaal",
      "_type": "location"
    }
  ]
}

这些数据作为一串JSON编码数据提供给我,我将其存储在变量$nextevents中。

我想过滤掉一些东西,只保留每条记录的某些属性:

  • 姓名(“ernst,bobbie en de rest”)
  • 团体名称(“Wij willen water show”)
  • 位置类型(“Grote zaal”)
  • starttime(“2016-05-01T16:00:00 + 02:00”) 我该如何管理?

1 个答案:

答案 0 :(得分:1)

以下是过滤数据的方法:

$json_data = json_decode($nextevents);
$filtered_data = [];
for($i = 0; $i < count($json_data); $i++){
   $item = $json_data[$i];
   $filtered_data[$i] = array(
      "name" => $item["name"],
      "group_name" => $item["group"]["name"],
      "location_name" => $item["locations"][0]["name"],
      "start_time" => $item["starttime"]
   );
}

然后你可以使用它。例如,如果您想以与您的示例类似的方式输出它:

for($i = 0; $i < count($filtered_data); $i++){
   $item = $filtered_data[$i];
   echo "Name : ".$item["name"].", ".
      "Group name : ".$item["group_name"].", ".
      "Location : ".$item["location_name"].", ".
      "Start time : ".$item["start_time"].
      "\n");
}

我认为一般的想法是过滤数据,最实用的方法是重建另一个对象,只保留你想要的东西。