gpt4 book ai didi

php - 结构化 JSON 布局

转载 作者:塔克拉玛干 更新时间:2023-11-03 05:34:02 24 4
gpt4 key购买 nike

我目前正在通过 PHP 使用 JSON,当我对它进行编码时,它会输出为:

{"username":"ND","email":"test@email.com","regdate":"8th June 2010","other":{"alternative":"ND"},"level":"6"}

当我希望它像这样输出时:

{
"username": "ND",
"email": "test@email.com",
"regdate": "8th June 2010",
"other":
{
"alternative": "ND"
},
"level":"6"
}

这样我和我的其他开发人员就可以在结构化的情况下很好地阅读它。我该怎么做?

例子也是这样的:

https://graph.facebook.com/19292868552

干杯

最佳答案

我自己觉得这很有用,所以这是我写的一个小函数:

<?php
function json_pretty_encode($obj)
{
$json = json_encode($obj);
if (!$json) return $json;

$f = '';
$len = strlen($json);

$depth = 0;
$newline = false;

for ($i = 0; $i < $len; ++$i)
{
if ($newline)
{
$f .= "\n";
$f .= str_repeat(' ', $depth);
$newline = false;
}

$c = $json[$i];
if ($c == '{' || $c == '[')
{
$f .= $c;
$depth++;
$newline = true;
}
else if ($c == '}' || $c == ']')
{
$depth--;
$f .= "\n";
$f .= str_repeat(' ', $depth);
$f .= $c;
}
else if ($c == '"')
{
$s = $i;
do {
$c = $json[++$i];
if ($c == '\\')
{
$i += 2;
$c = $json[$i];
}
} while ($c != '"');
$f .= substr($json, $s, $i-$s+1);
}
else if ($c == ':')
{
$f .= ': ';
}
else if ($c == ',')
{
$f .= ',';
$newline = true;
}
else
{
$f .= $c;
}
}

return $f;
}
?>

这是天真的,相信 PHP 会返回一个有效的 JSON 字符串。它可以写得更简洁,但这样修改起来很容易。 (当然,这在只有机器读取文本的生产场景中增加了不必要的开销。)

编辑:添加了一个 else 子句来捕获数字和其他未知字符。

关于php - 结构化 JSON 布局,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3485219/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com