Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/264.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 如何使用不带引号的键生成JSON?_Php_Json - Fatal编程技术网

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);