json_decode () espera que el parámetro 1 sea una cadena, matriz dada

3 minutos de lectura

Avatar de usuario de Jennifer Anthony
jennifer antonio

¿Qué causa este error en mi código?

$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

error:

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

ACTUALIZAR:

si uso json_encode en lugar de json_decodemi salida es esta:

[{"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}]

Son palabras persas.

  • Está pasando una matriz donde se espera una cadena. Está creando la matriz en la línea anterior, ¿es necesario? ¿Por qué no simplemente usar $row->guide ¿directamente?

    – Peka

    15/09/2011 a las 20:15


  • Qué está tratando de lograr ?

    – aziz punjani

    15/09/2011 a las 20:20

  • ¿Qué está tratando de hacer aquí?

    – genérico

    15/09/2011 a las 20:40

Avatar de usuario de gen_Eric
genérico

creo que quieres json_encodeno json_decode.

  • si uso de json_encode mi salida es esta: [{"guide":["\u0633\u06cc\u062f \u0633\u0639\u06cc\u062f \u062f\u0627\u062f\u0627\u0634\u0632\u0627\u062f\u0647"]},{"guide":["\u0633\u06cc\u062f \u0633\u0639\u06cc\u062f \u062f\u0627\u062f\u0627\u0634\u0632\u0627\u062f\u0647"]},{"guide":null}]son palabras persas

    – Jennifer Antonio

    15 de septiembre de 2011 a las 20:18

  • @Selena: La \u0633 los caracteres son solo caracteres Unicode que están codificados. La primera guide es سید سعید داداشزاده. ¿Está bien?

    – genérico

    15 de septiembre de 2011 a las 20:23


  • @Selena: ¿Enseñarlo dónde? Si repite la cadena (en JavaScript), se imprimirán correctamente. No necesita hacer nada especial, solo repetirlos normalmente.

    – genérico

    15 de septiembre de 2011 a las 20:29


  • No quiero repetirlos en JavaScript. ¿Qué quieres decir con repetirlos normalmente?

    – Jennifer Antonio

    15/09/2011 a las 20:33

  • @Selena: ¿Qué estás tratando de hacer aquí? ¿Qué quieres hacer con las palabras?

    – genérico

    15/09/2011 a las 20:34


Avatar de usuario de Kareem
Kareem

Establecer la decodificación en verdadero

Su decodificación no está configurada como verdadera. Si no tiene acceso para establecer la fuente en verdadero. El siguiente código lo arreglará por ti.

$WorkingArray = json_decode(json_encode($data),true);

json_decode() se usa para decodificar una cadena json en una matriz/objeto de datos. json_encode() crea una cadena json a partir de una matriz o datos. Estás usando la función incorrecta, amigo mío, prueba con json_encode();

  • hacer un objeto

    $obj = json_decode(json_encode($need_to_json));

  • Mostrar datos de este $obj

    $obj->{'needed'};

Referencia

Avatar de usuario de Akhil Jain
Akhil jainista

aquí está la solución para un problema similar al que me enfrentaba al extraer el nombre del perfil de usuario facebook json object

$uname=json_encode($userprof);
$uname=json_decode($uname);
echo "Welcome " . $uname -> name  ;

Ok, me estaba encontrando con el mismo problema. Lo que no noté es que estaba usando json_decodificar() En lugar de usar json_encode() así que para aquellos que van a venir aquí, asegúrese de estar usando la función correcta, que es json_encode()

Nota: Depende de en qué esté trabajando, pero asegúrese de estar usando la función correcta.

¿Ha sido útil esta solución?