Php 如何使用不带引号的键生成JSON?
这就是我想做的。我想更改下面的关联数组中的键Php 如何使用不带引号的键生成JSON?,php,json,Php,Json,这就是我想做的。我想更改下面的关联数组中的键 array("role" => "annotation"); 上面的代码返回JSON格式的结果 {"role": "annotation"} 我希望上面的输出与下面的输出相同 {role: "annotation"} 。如果不是,它们就不会与JSON标准兼容。使用json_encode无法更改此行为 如果您想要JavaScript对象文本,它允许不带引号的字符串键,那么您需要编写自己的代码来输出它,我不推荐这样做。试试这个 $a = a
array("role" => "annotation");
上面的代码返回JSON格式的结果
{"role": "annotation"}
我希望上面的输出与下面的输出相同
{role: "annotation"}
。如果不是,它们就不会与JSON标准兼容。使用json_encode无法更改此行为
如果您想要JavaScript对象文本,它允许不带引号的字符串键,那么您需要编写自己的代码来输出它,我不推荐这样做。试试这个
$a = array($role => "annotation");
echo $a = preg_replace('/"([^"]+)"\s*:\s*/', '$1:', json_encode($a));
@卡皮尔
是一个更安全的选项。Strings值总是带引号的,所以role不是有效的数组键,而“role”是如果您检查最后一个示例实际上不是有效的JSON,那么右侧的说明符应该是带引号的字符串。嘿,有什么原因需要不带引号的键吗?我需要它用于谷歌条形图。我已经为它制作了AJAX,我需要在其中使用注释角色。我的目的是在条形图中画出两条线之间的距离。这很有效。谢谢,但是如果它已经在这样的数组中,我如何修改它呢?[['sample1','sample2',{role:annotation}]]我希望它是这样的[['sample1','sample2',{role:annotation}]]请帮助;echo$a=preg_replace'/[^]+\s*:\s*/','$1:',json_encode$a;
preg_replace('/"([^\s"]+)"\s*:\s*/', '$1:', $json);