json decode() ожидает, что параметр 1 будет строкой, массив задан


Что вызывает ошибку в моем коде?

$query = $this->db->query("SELECT * FROM tour_foreign ORDER BY id desc");
        $data = array();
        foreach ($query->result() as $row)
            $data[] = array('guide' => $row->guide);

            echo json_decode($data); //Line 167

Ошибка:

erro: json_decode() expects parameter 1 to be string, array given: Line Number: 167

ОБНОВЛЕНИЕ:

Если использовать json_encode, а не json_decode, то мой вывод таков:

[{"guide":["\u0633\u06cc\u062f \u0633\u0639\u06cc\u062f \u062f\u0627\u062f\u0627\u0634\u0632\u0627\u062f\u0647"]},{"guide":["\u0633\u06c‌​c\u062f \u0633\u0639\u06cc\u062f \u062f\u0627\u062f\u0627\u0634\u0632\u0627\u062f\u0647"]},{"guide":null}]

Это персидское слово.

 11
Author: Fabio, 2011-09-16

5 answers

Я думаю, ты хочешь json_encode, нет json_decode.

 36
Author: Rocket Hazmat, 2012-04-15 14:46:46

Для вашего декодирования не установлено значение true. Если у вас нет доступа, установите для источника значение true. Приведенный ниже код исправит это за вас.

$WorkingArray = json_decode(json_encode($data),true);
 8
Author: Kareem, 2014-10-19 11:46:14

Json_decode() используется для декодирования строки json в объект массива/данных. json_encode() создает строку json из массива или данных. Вы используете неправильную функцию, мой друг, попробуйте json_encode();

 2
Author: macintosh264, 2011-09-15 20:42:53

Карим!!!! спасибо

Php-----------------------------------------------------------------------------

header('Content-type: application/json');
header("access-control-allow-origin: *");
...
....
        $answer  = json_decode(json_encode( $_GET['json'] ), true );

         //echo $answer[0]['preguntaid'] ;

        echo $_GET['jsoncallback'] . '(' . json_encode($answer )  . ');'; // for JSONP

Php-------------------------------------------------------

JQUERY (ЗАПРОС)------------------------------------------------------- ...

$.ajax({
                url: 'http:XXXXXXXXXvalidar_respuestas.php',
                dataType: 'jsonp',
                type: "GET",
                jsonp: 'jsoncallback',
                crossDomain: true,
                data : { json : [{"preguntaid":151,"alternativa":427,"respuesta":"false"},{"preguntaid":151,"alternativa":428,"respuesta":"true"}] } , //    { } 
                timeout: 5000,
                success: function(data){

...`

РАБОТАЕТ для меня

 2
Author: Cristián Vargas Acevedo, 2015-01-19 19:01:28

Вот решение аналогичной проблемы, с которой я столкнулся при извлечении имени из профиля пользователя facebook json объекта

$uname=json_encode($userprof);
$uname=json_decode($uname);
echo "Welcome " . $uname -> name  ;
 1
Author: Akhil Jain, 2015-06-17 04:58:59