PHP - Json desde URL - json_decode devuelve null

 
Vista:
sin imagen de perfil
Val: 5
Ha aumentado su posición en 27 puestos en PHP (en relación al último mes)
Gráfica de PHP

Json desde URL - json_decode devuelve null

Publicado por Asier (3 intervenciones) el 14/10/2019 17:34:58
Hola a todos,

Queria pediros ayuda con una peticion de hago a una URL. Esta url me devuelvo un json que despues de parsear no consigo recorrer y si hago un var_dump o print_r me devuelve null.

Si hago un echo del archivo como me llega si que me aparecen los datos.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
$url = 'http://www.mytrama.com/tramaResources/json?file=Barakaldo/farmacias.json';
$obj = file_get_contents(($url), true);
$arr = json_decode($obj);
 
// Sin parsear me muestra los datos
echo $obj;
 
//Parseado ya no
echo $array;
 
//Si intento recorrerlo con un foresearch no devuelve nada
 
   foreach($obj as $k => $v) {
    if (is_array($v)) {
         echo $v['nombre'];
       })
    }

He problado a pasarlo a array y recorrerlo, parsearlo,volver a convertirlo en JSON y no hay manera. Seguro que alguno de vosotros me echa un cable y lo hace en un segundo pero es que llevo tiempo sin programar y me esta costando.

Muchas gracias por cualquier ayuda
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de joel
Val: 3.828
Oro
Ha mantenido su posición en PHP (en relación al último mes)
Gráfica de PHP

Json desde URL - json_decode devuelve null

Publicado por joel (1269 intervenciones) el 14/10/2019 18:53:33
Si revisas el contenido devuelve por la función json_last_error() te dira que el contenido del mismo no es utf-8, por lo que tienes que utilizar:
1
$arr = json_decode($obj, true, 512, JSON_INVALID_UTF8_IGNORE);
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil
Val: 5
Ha aumentado su posición en 27 puestos en PHP (en relación al último mes)
Gráfica de PHP

Json desde URL - json_decode devuelve null

Publicado por Asier (3 intervenciones) el 15/10/2019 09:30:38
Hola Joel,

Gracias por la ayuda, lo estoy probando de mil maneras pero aun codificandolo a utf-8 no hay manera. ¿Algun otro consejo? Os lo agradeceria porque estoy en bucle y no lo saco.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
session_start();
header('Content-Type: text/html; charset =utf-8');
$url = 'http://www.mytrama.com/tramaResources/json?file=Barakaldo/farmacias.json';
$obj = file_get_contents(($url), true);
$arr = json_decode($obj, true, 512, JSON_INVALID_UTF8_IGNORE);
 
 
foreach ($arr as $value) {
$cadena = "El nombre  es: '". $value['nombre'] ."', y su dirección es: ". $value['direccion'] ."},";
print ($cadena);
}
 
json_decode($obj);
 
switch (json_last_error()) {
    case JSON_ERROR_NONE:
        echo ' - No errors';
    break;
    case JSON_ERROR_DEPTH:
        echo ' - Maximum stack depth exceeded';
    break;
    case JSON_ERROR_STATE_MISMATCH:
        echo ' - Underflow or the modes mismatch';
    break;
    case JSON_ERROR_CTRL_CHAR:
        echo ' - Unexpected control character found';
    break;
    case JSON_ERROR_SYNTAX:
        echo ' - Syntax error, malformed JSON';
    break;
    case JSON_ERROR_UTF8:
        echo ' - Malformed UTF-8 characters, possibly incorrectly encoded'; --> efectivamente me devuelve este error
    break;
    default:
        echo ' - Unknown error';
    break;
}
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de joel
Val: 3.828
Oro
Ha mantenido su posición en PHP (en relación al último mes)
Gráfica de PHP

Json desde URL - json_decode devuelve null

Publicado por joel (1269 intervenciones) el 15/10/2019 11:31:40
Yo hice esto:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
<!DOCTYPE html>
<html>
<head>
    <meta charset="utf-8">
</head>
 
<body>
<?php
$url = 'http://www.mytrama.com/tramaResources/json?file=Barakaldo/farmacias.json';
$obj = file_get_contents($url);
 
$arr = json_decode($obj, true, 512, JSON_INVALID_UTF8_IGNORE);
echo json_last_error();
 
// Sin parsear me muestra los datos
echo $obj;
 
echo "<hr>";
//Parseado ya no
print_r($arr);
 
?>
</body>
</html>

y funciona!!!

prueba únicamente mi código sin nada mas...
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil
Val: 5
Ha aumentado su posición en 27 puestos en PHP (en relación al último mes)
Gráfica de PHP

Json desde URL - json_decode devuelve null

Publicado por Asier (3 intervenciones) el 15/10/2019 11:35:20
Si, sin parsear te lo muestra en pantalla con los caracteres mal pero necesito parsearlo para mostrar los datos como si fuese un array.

No ha habido manera pero al final lo que he hecho es usar jquery $.getJSON. Me ha devuelto los datos y los he parseado sin problema así que solucionado.

Muchas gracias y un saludo
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de joel
Val: 3.828
Oro
Ha mantenido su posición en PHP (en relación al último mes)
Gráfica de PHP

Json desde URL - json_decode devuelve null

Publicado por joel (1269 intervenciones) el 15/10/2019 15:03:52
Has probado mi código???
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar