Foros del Web » Programando para Internet » PHP »

Problema con json_encode

Estas en el tema de Problema con json_encode en el foro de PHP en Foros del Web. Hola gente como estan? He estado trabajando en un proyecto e hice como una especie de API pero ahora tengo un pequeño problema con las ...
  #1 (permalink)  
Antiguo 06/07/2016, 08:30
 
Fecha de Ingreso: julio-2014
Mensajes: 115
Antigüedad: 9 años, 9 meses
Puntos: 1
Problema con json_encode

Hola gente como estan? He estado trabajando en un proyecto e hice como una especie de API pero ahora tengo un pequeño problema con las comillas dobles. Tengo lo siguiente:
Código PHP:
$json=html_entity_decode(json_encode($array), ENT_NOQUOTES'UTF-8');

echo 
$json
Vale, con el tema de los caracteres especiales de momento no me ha dado problemas excepto con las malditas comillas dobles que me pone " cuando lo imprimo con javascript. He googleado y alguna solucion la dan tocando el codigo javascript el problema es que no puedo manipular dicho lenguaje porque seria muchos scripts y seria mas rapido solucionarlo desde php.

He probado a quitar una parte del codigo tal que asi:

Código PHP:
$json=html_entity_decode(json_encode($array));

echo 
$json
El problema es que a la hora de imprimir el json hace algo como: "texto:"hola"" y claro como no estan escapadas las comillas dobles pues el javascript no lo ejecuta porque se produce un error de sintaxis.

Si alguien me pudiera echar una mano le estaria eternamente agradecido

Gracias, y un saludo
  #2 (permalink)  
Antiguo 06/07/2016, 09:33
Avatar de Synkronice  
Fecha de Ingreso: octubre-2007
Ubicación: Madrid
Mensajes: 831
Antigüedad: 16 años, 6 meses
Puntos: 48
Información Respuesta: Problema con json_encode

Hola jonyjdv,

olvidate de la función html_entity_decode(), solo usa la funciona json_encode()

Código PHP:
$json json_encode($array); 

echo 
$json
Saludos.
__________________
El problema de nuestra época consiste en que sus hombres no quieren ser útiles sino importantes.

Winston Churchill
  #3 (permalink)  
Antiguo 06/07/2016, 09:37
 
Fecha de Ingreso: julio-2014
Mensajes: 115
Antigüedad: 9 años, 9 meses
Puntos: 1
Respuesta: Problema con json_encode

Cita:
Iniciado por Synkronice Ver Mensaje
Hola jonyjdv,

olvidate de la función html_entity_decode(), solo usa la funciona json_encode()

Código PHP:
$json json_encode($array); 

echo 
$json
Saludos.
hola amigo, gracias por responder. No me funciona asi porque en la bbdd tengo guardado los datos con &quot &amp etc etc.

saludos
  #4 (permalink)  
Antiguo 06/07/2016, 09:39
Avatar de Synkronice  
Fecha de Ingreso: octubre-2007
Ubicación: Madrid
Mensajes: 831
Antigüedad: 16 años, 6 meses
Puntos: 48
Respuesta: Problema con json_encode

Cita:
Iniciado por jonyjdv Ver Mensaje
hola amigo, gracias por responder. No me funciona asi porque en la bbdd tengo guardado los datos con &quot &amp etc etc.

saludos
Puedes mostar que es lo que tienes en la base de datos?
__________________
El problema de nuestra época consiste en que sus hombres no quieren ser útiles sino importantes.

Winston Churchill
  #5 (permalink)  
Antiguo 06/07/2016, 09:50
 
Fecha de Ingreso: julio-2014
Mensajes: 115
Antigüedad: 9 años, 9 meses
Puntos: 1
Respuesta: Problema con json_encode

Cita:
Iniciado por Synkronice Ver Mensaje
Puedes mostar que es lo que tienes en la base de datos?
Si claro, copio y pego un registro cualquiera:

El detenido en Vitoria descuartizó a su mujer con una sierra
  #6 (permalink)  
Antiguo 06/07/2016, 10:02
Avatar de Synkronice  
Fecha de Ingreso: octubre-2007
Ubicación: Madrid
Mensajes: 831
Antigüedad: 16 años, 6 meses
Puntos: 48
Respuesta: Problema con json_encode

Cita:
Iniciado por jonyjdv Ver Mensaje
Si claro, copio y pego un registro cualquiera:

El detenido en Vitoria descuartizó a su mujer con una sierra
Prueba a invertir el uso de las funciones, mira a ver así...

Código PHP:
$str "El detenido en Vitoria descuartizó a su mujer con una sierra";
echo 
json_encode(html_entity_decode($str)); 
Saludos.
__________________
El problema de nuestra época consiste en que sus hombres no quieren ser útiles sino importantes.

Winston Churchill
  #7 (permalink)  
Antiguo 06/07/2016, 10:12
 
Fecha de Ingreso: julio-2014
Mensajes: 115
Antigüedad: 9 años, 9 meses
Puntos: 1
Respuesta: Problema con json_encode

Cita:
Iniciado por Synkronice Ver Mensaje
Prueba a invertir el uso de las funciones, mira a ver así...

Código PHP:
$str "El detenido en Vitoria descuartizó a su mujer con una sierra";
echo 
json_encode(html_entity_decode($str)); 
Saludos.
Hola, hasta ahi habia probado y en principio funciona pero hai un pequeño problema. Imaginate el siguiente texto:

Fruta:"Manzana"

En formato json quedaria algo como

"Fruta:"Manzana""

El problema en este caso es que no consigo escapar las comillas dobles.

Un saludo y gracias por tu paciencia.

[EDITO]

Habia pensado en crear una funcion en php que lo haga, pero quizas no es lo mas "elegante"

Última edición por jonyjdv; 06/07/2016 a las 10:19
  #8 (permalink)  
Antiguo 06/07/2016, 10:36
Avatar de Synkronice  
Fecha de Ingreso: octubre-2007
Ubicación: Madrid
Mensajes: 831
Antigüedad: 16 años, 6 meses
Puntos: 48
Respuesta: Problema con json_encode

Hola,

mira a ver si esto te funciona mejor...

Código PHP:
// Nos aseguramos que la cabeceras de salida se ajustan al content-type y charset correctos.
header("Content-Type: application/json; charset=UTF-8");

// Cadena de prueba
$str 'El detenido en Vitoria descuartizó a su mujer con una sierra. Fruta: "Manzana"';

// Convertimos cadena a formato JSON
echo json_encode(html_entity_decode($str), JSON_UNESCAPED_UNICODE); 
Saludos.
__________________
El problema de nuestra época consiste en que sus hombres no quieren ser útiles sino importantes.

Winston Churchill
  #9 (permalink)  
Antiguo 06/07/2016, 10:48
 
Fecha de Ingreso: julio-2014
Mensajes: 115
Antigüedad: 9 años, 9 meses
Puntos: 1
Respuesta: Problema con json_encode

Cita:
Iniciado por Synkronice Ver Mensaje
Hola,

mira a ver si esto te funciona mejor...

Código PHP:
// Nos aseguramos que la cabeceras de salida se ajustan al content-type y charset correctos.
header("Content-Type: application/json; charset=UTF-8");

// Cadena de prueba
$str 'El detenido en Vitoria descuartizó a su mujer con una sierra. Fruta: "Manzana"';

// Convertimos cadena a formato JSON
echo json_encode(html_entity_decode($str), JSON_UNESCAPED_UNICODE); 
Saludos.
la verdad es que no se como hice pero se soluciono el problema, o eso parece de momento, lo unico que hice fue eliminar todos los datos y generar unos nuevos de pruebas tal vez el fallo sea de versiones anteriores de mi web y que no fuera compatible todo el codigo.

De todas formas me he percatado de una linea de codigo que inserta datos en la bbdd:

Código PHP:
$datos[$clave]=htmlspecialchars(htmlentities($datos[$clave],ENT_QUOTES), ENT_QUOTES); 
La he dejado asi:

Código PHP:
$datos[$clave]=htmlentities($datos[$clave],ENT_QUOTES); 
Eso lo pusieron porque hay un campo en el cual el usuario inserta una tabla en html y se supone que cuando lo guarda y luego se visualiza en otra pagina la tabla se debe ver como una tabla html.

Última edición por jonyjdv; 06/07/2016 a las 11:04

Etiquetas: html
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 01:38.