Не убирается экранирование в JSON ответе

132
05 октября 2019, 09:20
function getRefByUserID($apiMethodParams)
    {
        $retJSON = $this->createDefaultJson();
        if (isset($apiMethodParams))
        {
            $refUserID = $apiMethodParams->UserID;
            $query = "Select * From refs where UserID = " . $refUserID;
            $result = mysqli_query($this->mySQLWorker->connectLink, $query);

            if (mysqli_num_rows($result) != 0)
            {
                while($row=$result->fetch_row())
                {
                    $ref = new Reference($row[0], $row[1], $row[2], $row[3], $row[4], $row[5], $row[6]);
                    $retJSON->Result = json_encode($ref, JSON_UNESCAPED_SLASHES);
                }
            }
            else{
                $retJSON->Error = APIConstants::$ERROR_CAN_NOT_ROW;
            }
        }
        else
        {
            $retJSON->error = APIConstants::$ERROR_PARAMS;
        }
        return $retJSON;
    }

Результат:

{"response":{"Result":"{\"ID\":\"3\",\"UserID\":\"42\",\"Type\":\"0\",\"FullName\":\"sdfdvcxvxcv\",\"GroupNumber\":\"420\",\"Count\":\"2\",\"Date\":\"2012-12-19\"}"}}

Как убрать лишние слэш?

Answer 1

В этом коде ничего кодировать не надо. Ни сначала, ни потом. И "собирать" никакой массив не надо. Потому что массив тут один и он уже "собран".

Все что здесь надо сделать - это убрать кучу бессмысленного карго культ кода.

        if ($row = $result->fetch_row())
        {
            $retJSON->Result = new Reference(...$row);
        } else{
            $retJSON->Error = APIConstants::$ERROR_CAN_NOT_ROW;
        }
READ ALSO
Как вывести количество юзеров у которых есть группы в определенном отрезке времени

Как вывести количество юзеров у которых есть группы в определенном отрезке времени

Собственно говоря есть категория юзеров $participants, которые состоят в группах и нет, у групп есть время начала $start_time и конца $end_time , нужно вывести...

108
Как узнать параметры FastCGI?

Как узнать параметры FastCGI?

Иногда скрипт падает при дебаге, когда остановится на брейкпоинте по таймаутуГрешу на FcgidIOTimeout, так как по умолчанию у него 40 секунд и в логах...

116
Сравнить вложенные массивы?

Сравнить вложенные массивы?

$result = array_diff($array, $array2) почему такая конструкция перестаёт работать если сделать так $array2=array_chunk($array2, 4); $array=array_chunk($array, 4)

114
Удаления файлов PHP

Удаления файлов PHP

По нажатию на елемент хочу удалять файлы из бд и сервера, но получаю пустой ответ от сервера и ошибку:

133