我用PHP编程语言创建了很多API,输出结果时使用了以下标签:
json_encode($arr),
现在我想以漂亮的打印格式在浏览器中打印输出,而不使用JSON Viewer扩展。
我已经完成了400多个Web服务,使用json_encode($ arr)进行输出,但我不想改变。
echo json_encode($arr, JSON_PRETTY_PRINT);
我只想知道如何覆盖默认的json_encode()预定义功能以满足我的需求。
有一些方法可以通过使用一些扩展来实现,如runkit
提供runkit_function_redefine()
或者 apd
提供override_function()
。
如果我是你,我会简单地查找/替换json_encode()
调用,添加JSON_PRETTY_PRINT
。
另外一种方案是不需要重新定义json_encode函数,你可以注册一个输出处理器,在打印JSON后再次打印出格式优美的JSON。
ob_start(function($json) {
return json_encode(json_decode($json), JSON_PRETTY_PRINT);
});
您可以像这样使用override_function
:
rename_function('json_encode', 'original_json_encode');
override_function('json_encode', '$value, $options = 128, $depth = 512', 'return original_json_encode($value, $options, $depth);');
通过这种方式,您可以使用原始方法来获取结果,覆盖默认选项(128是JSON_PRETTY_PRINT
的值),并且您可以像以前一样使用json_encode
。
echo "<pre/>"; echo json_encode($arr);
- Alive to die - Anant