Почему json_encode ($ arr) не возвращает истинную строку? - PullRequest
2 голосов
/ 09 марта 2020

Вместо этого "{\"name\":\"Shares Magazine\"}" Я хочу это {"name":"Shares Magazine"}.

Чтобы добиться этого, я делаю это json_encode(["name" => $user->reference_source], JSON_UNESCAPED_SLASHES);

Безрезультатно, так как это всегда заканчивается в база данных "{\"name\":\"Shares Magazine\"}".

Ответы [ 2 ]

1 голос
/ 09 марта 2020

Я предполагаю, что вы используете столбец типа 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"}.

0 голосов
/ 09 марта 2020

Попробуйте это после кодирования вашего JSON (это работает лучше, чем JSON_UNESCAPED_SLASHES):

$json = preg_replace('/\\\"/',"\"", $json);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...