Как исправить php json_encode с помощью Redis и Laravel? - PullRequest
0 голосов
/ 12 апреля 2020

, когда я пытаюсь сделать json ответ, первый ответ не Json значение, как это.

{
"success": true,
"data": "{\"name\":\"Adventure\",\"slug\":\"adventure\"}"
}

, но когда я пытаюсь 2, 3, ....., ответ Json значение.

{
"success": true,
"data": {
    "name": "Adventure",
    "slug": "adventure"


   }
}

как это исправить, в этом случае я использую Laravel. это мой код,

$slug = $request->header()['slug'][0];
$redis = Redis::get('genre_details_'.$slug);
$redis = json_decode($redis);

if(empty($redis)){
    $query = Genre::select('name', 'slug')->where('slug', $slug)->first();

    if(empty($query)){
        return response()->json(['success' => false, 'message' => 'slug code is wrong!'],406);
    }

    Redis::set('genre_details_'.$slug,json_encode($query));
    Redis::expire('genre_details_'.$slug, 7200);

    $redis = Redis::get('genre_details_'.$slug);
}

$response = [
    'success' => true,
    'data' => $redis
];

return response()->json($response);

http://sandbox.onlinephpfunctions.com/code/f13947f25f7f6078269ab697c62edc126bcd9afe

1 Ответ

1 голос
/ 12 апреля 2020

Переместить $redis = json_decode($redis); после if(empty($redis)){ } кода.

Потому что, когда вы помещаете данные в redis - вы помещаете их туда json_encode d. Но не расшифровывать его. И когда вы получаете данные из Redis в 2, 3 раза - вы декодируете их. Итак, вам нужно декодировать ваши данные каждый раз .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...