Saltar al contenido

Cómo json_encode php array pero el keys sin comillas

Recuerda que en las ciencias un error casi siempre tiene diferentes resoluciones, así que te compartiremos la mejor y más eficiente.

Solución:

Primero, tienes que generar tu array en php, por lo que el valor de los datos son números enteros, no cadenas:

Emulé tu array de su json_encode (), supongo que se ve así (o debería):

$array =  array(
                array("label" => "Crear Usuario",   "data" => 2),
                array("label" => "Impresoras",      "data" => 1),
                array("label" => "Problema Correo", "data" => 1),
                array("label" => "Requisicion Equipo", "data" => 1),
                array("label" => "Sitio Web", "data" => 1)
            );

    $data = json_encode($array);
  • Tenga en cuenta que los 2 y 1 no están entre comillas, por lo que son números enteros, esto es importante.

Entonces te estás perdiendo en Javascript el JSON.parse() para convertir esa salida en un objeto json:


  • Tenga en cuenta que var data = … es SINGLE QUOTED, por lo que captura el eco de php como una cadena

El resultado de console.log() es esto para mí:

[Object, Object, Object, Object, Object] // First console.log(): one object with the 5 Objects. 
Object label: "Crear Usuario", data: 2 // secons console log (json[0]) with the first object 

Parece lo que necesitas, ¿verdad?

No hay diferencia entre citado y no citado keys. El problema está en las comillas de los valores reales de los datos, ya que Flot requiere números, no cadenas.

La función json_encode decide si cotizar según el tipo de datos que le está dando. En este caso, parece que cualquier operación que esté realizando para crear $datos está produciendo string valores en lugar de números enteros. Debe volver a examinar esas operaciones, o decirle explícitamente a PHP que las interprete como números, usando conversión (int) o (float), o las funciones intval/floatval.

Prueba algo como esto:

function buildBrokenJson( array $data ) 

   $result = '';

   $separator = '';
   foreach( $data as $key=>$val ) 
      $result .= $separator . $key . ':';

      if( is_int( $val ) ) 
         $result .= $val;
       elseif( is_string( $val ) ) 
         $result .= '"' . str_replace( '"', '"', $val) . '"';
       elseif( is_bool( $val ) ) 
         $result .= $val ? 'true' : 'false';
       else 
         $result .= $val;
      

      $separator = ', ';
   

   $result .= '';

   return $result;

y cuando se ejecuta

$a = array("string"=>'Crear "Usuario', 'foo'=>':', "int"=>2, "bool"=>false);
var_dump( buildBrokenJson($a) );

da:

string(54) "string:"Crear "Usuario", foo:":", int:2, bool:false"

Puntuaciones y reseñas

Si aceptas, tienes la opción de dejar un ensayo acerca de qué le añadirías a esta noticia.

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *