Laravel - toJson() 方法不转义引号 (“) 所以我无法使用 Javascript 解析它


Laravel - toJson() method not escaping quotes (") so I can't parse it with Javascript

{!! Auth::user()->myClass()->get()->lists('custom_name','id')->toJson() !!}

返回类似的东西

{"1":"Category G - George Costanza","2":"Category "ABc" - Dwayne Johnson"}

当尝试使用 JavaScript 解析它时,这上升为错误JSON.parse

SyntaxError: JSON.parse: expected ',' or '}' after property value in object at line 1 ...

toJson()不应该返回转义引号作为:

{"1":"Category G - George Costanza","2":"Category '"ABc'" - Dwayne Johnson"}

我希望我在这里缺少一些基本的东西。

编辑:

自定义访问器:

public function getCustomNameAttribute(){
        return $this->parentModel->name . ' -  ' . $this->name;
    }

myClass 是多对多关系,否则工作正常。据我所知。

而不是这个{!! Auth::user()->myClass()->get()->lists('custom_name','id')->toJson() !!}

即使用{!! !!}{{ }}使用<?= ?>

它们将生成的 JSON 括在额外的双引号中,""而不是单引号''因此parseJSON将无法解析它。

因此您可以使用这个

var javascript_var = $.parseJSON('<?= Auth::user()->myClass()->get()->pluck('custom_name','id')->toJson() ?>');

即使用PHP的简写回声功能<?= ?>