簡體   English   中英

從JSON響應中刪除字段

[英]Removing fields from the JSON response

我正在使用WP REST API(WP API),並在下面通過此調用檢索帖子。

wp-json/posts

有170個帖子,JSON文件為3.1MB,下載大約需要9秒鍾。 提取帖子時,我唯一需要的數據是標題和特征圖像,因此不需要99%的JSON文件。

我一直在看下面的這種方法,該方法從響應中刪除字段,它在一定程度上可以工作,但仍然不能刪除IDauthor等字段。

function remove_extra_data( $data, $post, $context ) {
  unset( $data['ID'] );
  unset( $data['status'] );
  unset( $data['excerpt'] );
  unset( $data['type'] );
  unset( $data['author'] );
  unset( $data['content'] );
  unset( $data['parent'] );
  unset( $data['date'] );
  unset( $data['modified'] );
  unset( $data['format'] );
  unset( $data['slug'] );
  unset( $data['guid'] );
  unset( $data['menu_order'] );
  unset( $data['comment_status'] );
  unset( $data['ping_status'] );
  unset( $data['sticky'] );
  unset( $data['date_tz'] );
  unset( $data['date_gmt'] );
  unset( $data['modified_tz'] );
  unset( $data['modified_gmt'] );
  unset( $data['meta'] );
  return $data;
}

add_filter( 'json_prepare_post', 'remove_extra_data', 10, 3 );

那么刪除包含嵌套內容的所有不想要的字段的最佳方法是什么?

如果將JSON嚴格解碼為數組而不是對象,則可以使用array_filter()類的東西來過濾掉不需要的屬性。

// This will only work in PHP 5.6+
$keys = [
    'ID',
    'author',
];
return array_filter($data, function($k) use ($keys) {
    return in_array($k, $keys, true);
}, ARRAY_FILTER_USE_KEY);

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM