【问题标题】:Why doesn't json_encode($arr) not return a true string?为什么 json_encode($arr) 不返回真正的字符串?
【发布时间】:2020-03-09 06:48:31
【问题描述】:

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

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

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

【问题讨论】:

标签: php laravel


【解决方案1】:

我假设您在数据库中使用 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"}。

【讨论】:

  • 谢谢你我也发现了
【解决方案2】:

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-10-22
    • 2015-10-23
    • 1970-01-01
    • 2013-10-16
    • 1970-01-01
    • 2018-12-22
    • 2021-08-23
    • 2020-07-06
    相关资源
    最近更新 更多