繁体   English   中英

为什么 json_encode($arr) 不返回真正的字符串?

[英]Why doesn't json_encode($arr) not return a true string?

而不是这个"{\\"name\\":\\"Shares Magazine\\"}"我想要这个{"name":"Shares Magazine"}

为了实现这一点,我正在做这个json_encode(["name" => $user->reference_source], JSON_UNESCAPED_SLASHES);

无济于事,因为这总是在数据库"{\\"name\\":\\"Shares Magazine\\"}"

我假设您在数据库中使用json类型列

Schema::create('articles', function (Blueprint $table) {
    $table->id();
    $table->json('json_column');
});

你也在你的模型中铸造

class Article extends Model
{
    protected $casts = [
        'json_column' => 'json',
    ];
}

那么你不需要在保存之前进行转换。 否则,您将以双重演员结束。 Laravel 为您做到了这一点。

Article::create([
    'json_column' => ['name' => 'Shares Magazine'],
]);

它将保存为{"name": "Shares Magazine"}

在编码你的 JSON 后试试这个(这比JSON_UNESCAPED_SLASHES效果更好):

$json = preg_replace('/\\\"/',"\"", $json);

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM