将过滤器行为添加到json_encode()

时间:2013-03-24 15:52:15

标签: php

我有一个数组,我为我正在构建的API编码为JSON,该数组来自数据库并包含一些我不想在JSON响应中使用的数据。所以我当然可以做的只是迭代数组,修改它然后将修改后的数组传递给json_encode()。但是当json_encode()本身迭代它时,我想我可以提高性能甚至可读性,如果我能以某种方式告诉json_encode在生成JSON的同时过滤掉某些键。

似乎json_encode不能使这成为可能,但也许还有其他一些我可以用来编码到json的东西呢?我看到json_encode()有一个选项参数可以改变行为,但你似乎无法添加自己的?

例如,我记得我曾经浏览过一个json解析器类,并且它有一个名为parseKey($key, $val)的方法,如果你想添加一个过滤器,你可以覆盖它。

1 个答案:

答案 0 :(得分:1)

你可以这样做:

$data = array("foo"=>1, "bar"=>2, "baz"=>3);
$rmk = array("foo");
$json = json_encode(array_diff_key($data, array_flip($rmk)));

这将使用$rmk中的键过滤掉值。但是,当谈到提高可读性时,我不确定。