让php输出带引号的Json,以便javascript将其视为对象

让php输出带引号的Json,以便javascript将其视为对象,php,javascript,json,Php,Javascript,Json,这里是我遇到的问题,我希望能够像这样输出一个javascript对象 { id : "title", name : "Title", field : "title", width : 200, cssClass : "cell-title", editor : Slick.Editors.Text } 请注意,编辑器:Slick.Editors.Text不在任何类型的引号中 我可以输出这个。。。但我似乎无法让php不在Slick.Editor.T

这里是我遇到的问题,我希望能够像这样输出一个javascript对象

{
    id : "title",
    name : "Title",
    field : "title",
    width : 200,
    cssClass : "cell-title",
    editor : Slick.Editors.Text
}
请注意,编辑器:Slick.Editors.Text不在任何类型的引号中

我可以输出这个。。。但我似乎无法让php不在Slick.Editor.Text周围加引号

{"id":"title","name":"Title","field":"title","width":200,"cssClass":"cell-title","editor":"Slick.Editors.Text"}
下面是我用来输出这个字符串的php代码

public function creatColumn($id, $name, $field, $width, $cssClass, $editor = null) {
    $obj = (object) array('id'=>$id, 'name'=>$name, 'field'=>$field, 'width'=>$width, 'cssClass'=> $cssClass, 'editor' => $editor);
    return json_encode($obj);
}

有没有办法将php json对象输出到不引用字符串的php

有点老套,但你可以:

public function creatColumn($id, $name, $field, $width, $cssClass, $editor = null) {
  $obj = (object) array('id'=>$id, 'name'=>$name, 'field'=>$field, 'width'=>$width, 'cssClass'=> $cssClass);
  $json = json_encode($obj);
  return str_replace('}', '"editor":'.$editor.' }', $json);
}

那不是JSON,所以,不,preg_replace也许…我发现了这个,看起来像你想要的: