如何在 PHP 7.x 中自定义 Pretty_Printed JSON?
How can I customise Pretty_Printed JSON in PHP 7.x?
PHP 的内置 PRETTY_PRINT
除了一些额外的标志之外不允许进行太多自定义:
JSON_UNESCAPED_SLASHES
JSON_UNESCAPED_UNICODE
但我正在寻找的自定义类型是一种可以转换显示 JSON 的自定义,因此它最终看起来是:
- 横向较少
- 2-space 缩进而不是 4
- 更垂直
- 数组和对象开头的换行符
- 同级数组和对象之间的换行符
- 同级条目之间换行
所以不是水平 spaced 输出:
[
{
"berry": "banana",
"description": [
"yellow",
"sweet"
],
"notes": []
},
{
"berry": "aubergine",
"taste": [
"purple",
"bitter"
],
"notes": []
}
]
我可以垂直 spaced 出来:
[
{
"berry": "banana",
"description": [
"yellow",
"sweet"
],
"notes": []
},
{
"berry": "aubergine",
"description": [
"purple",
"bitter"
],
"notes": []
}
]
PHP 7.x
中是否有任何内容可以让我自定义漂亮印刷的输出 JSON?
历史记录:
在 PHP 中重新格式化 JSON 的经典参考文献是 Dave Perrett 的 Format JSON With PHP。
这可以追溯到 2008 年,甚至早于 PRETTY_PRINT
旗帜(4 年后的 2012 年)。
我在 PHP 7.x 中找不到漂亮印刷 JSON 的任何具体补充,但我觉得我可以:
- 使用
PRETTY_PRINT
标志
- 然后 跟进一系列
str_replace()
和 preg_replace()
以实现我的自定义输出(如顶部问题中所述)
示例:
function Custom_Pretty_Print_JSON($Data) {
if (!is_null(json_decode($Data, TRUE))) {
$Data = json_decode($Data, TRUE);
}
$String = json_encode($Data, JSON_UNESCAPED_SLASHES | JSON_UNESCAPED_UNICODE | JSON_PRETTY_PRINT);
$String = str_replace(' ', ' ', $String);
$String = preg_replace("/(\:\s\{|\:\s\[|\,)\n([\s]+)(\"|\{|\[)/", "\n\n", $String);
return $String;
}
PHP 的内置 PRETTY_PRINT
除了一些额外的标志之外不允许进行太多自定义:
JSON_UNESCAPED_SLASHES
JSON_UNESCAPED_UNICODE
但我正在寻找的自定义类型是一种可以转换显示 JSON 的自定义,因此它最终看起来是:
- 横向较少
- 2-space 缩进而不是 4
- 更垂直
- 数组和对象开头的换行符
- 同级数组和对象之间的换行符
- 同级条目之间换行
所以不是水平 spaced 输出:
[
{
"berry": "banana",
"description": [
"yellow",
"sweet"
],
"notes": []
},
{
"berry": "aubergine",
"taste": [
"purple",
"bitter"
],
"notes": []
}
]
我可以垂直 spaced 出来:
[
{
"berry": "banana",
"description": [
"yellow",
"sweet"
],
"notes": []
},
{
"berry": "aubergine",
"description": [
"purple",
"bitter"
],
"notes": []
}
]
PHP 7.x
中是否有任何内容可以让我自定义漂亮印刷的输出 JSON?
历史记录:
在 PHP 中重新格式化 JSON 的经典参考文献是 Dave Perrett 的 Format JSON With PHP。
这可以追溯到 2008 年,甚至早于 PRETTY_PRINT
旗帜(4 年后的 2012 年)。
我在 PHP 7.x 中找不到漂亮印刷 JSON 的任何具体补充,但我觉得我可以:
- 使用
PRETTY_PRINT
标志 - 然后 跟进一系列
str_replace()
和preg_replace()
以实现我的自定义输出(如顶部问题中所述)
示例:
function Custom_Pretty_Print_JSON($Data) {
if (!is_null(json_decode($Data, TRUE))) {
$Data = json_decode($Data, TRUE);
}
$String = json_encode($Data, JSON_UNESCAPED_SLASHES | JSON_UNESCAPED_UNICODE | JSON_PRETTY_PRINT);
$String = str_replace(' ', ' ', $String);
$String = preg_replace("/(\:\s\{|\:\s\[|\,)\n([\s]+)(\"|\{|\[)/", "\n\n", $String);
return $String;
}