1

Estoy intentando parsear un JSON pero no logro cargar los datos que necesito...

Tengo el siguiente json, que me da los datos de varios clientes:

{
   "totaldocuments": 30535,
   "totaldocumentslocated": 30535,
   "advertisements": [
      {
         "basicinfo": {
            "name": "ACA NOMBRE",
            "urls": {
               "web": "web1",
               "webgenerica": "web2",
               "urlficha": "web3"
            },

En mi laravel tengo:

$url= 'url.json';

$client = new \GuzzleHttp\Client(['auth' => ['admin', 'password'],]);
$res = $client->get($url);
$content = (string) $res->getBody();
    
$clientes = json_decode($content, true);

$basicinfo = $clientes['advertisements'][0]['basicinfo'];

return view('test::leads', ['basicinfo'=> $basicinfo]);

En mi blade tengo:

@foreach ($basicinfo as $info)

  {{$info['name']}} <br>
        
@endforeach

El error que aparece es: Cannot access offset of type string on string

Hice varios intentos y solo logro ingresar al primero por ejemplo, totaldocuments... con:

return $clientes['totaldocuments']

Me retorna 30535 sin problemas.

¿Alguien me puede dar una mano con esto por favor?

Desde ya muchisimas gracias.

Edito:

$clientes = json_decode($content, true);
$basicinfo = $clientes['advertisements'];
return view('test::leads', ['clientes'=> $clientes]);

así pude recorrer el interior.

@foreach ($clientes['advertisements'] as $key => $lead)
        {{$lead['basicinfo']['name']}}
@endforeach

Ahora estoy intentando recorrer los interiores de esos como ser el caso de URL

7
  • En el JSON, en el apartado "basicinfo", cuantos elementos tiene? uno solo como en el ejemplo?
    – adrigo
    Commented el 9 may. 2022 a las 14:25
  • Hola, no, tiene varios... tiene, name, address, cirty, urls que en ese caso, urls dentro tiene a su vez, web, webgenerica, urlficha... vale aclarar que urls esta dentro de basicinfo.. fuera de basicinfo tengo infoplus osea al mismo nivel que basicinfo tengo otro que es infoplus... pero con resolver lo de arriba me arreglo con el resto Commented el 9 may. 2022 a las 14:42
  • Veo que has editado la pregunta, entiendo que has conseguido arreglarlo?
    – adrigo
    Commented el 10 may. 2022 a las 6:47
  • Si, lo que no logro recorrer es dentro de urls... el resto pude solucionar todo Commented el 10 may. 2022 a las 15:02
  • De acuerdo, siempre existira un elemento URL? y siempre sera tipo array? aunque este vacio?
    – adrigo
    Commented el 10 may. 2022 a las 19:03

1 respuesta 1

1

Prueba lo de las url con esto

@foreach ($clientes['advertisements'] as $key => $lead)
    {{$lead['basicinfo']['name']}}
    @foreach ($lead['basicinfo']['urls'] as $key => $url)
        {{$key}} -> {{$url}}
    @endforeach
@endforeach
3
  • No, mira estoy haciendolo por controller ahora como para guardar la db y despues generar un json un poco mas simple para la vista... Aquí si pude entrar a urls pero el foreach solo me almacena el ultimo dato... foreach ($item['basicinfo']['urls'] as $key => $url){ $asd['web'] = $url; } En las que tiene solamente web me almacena web.. si tiene web y web generica... me guarda solo la web generica y si tiene las 3 me guarda urlficha... es rarisimo Commented el 11 may. 2022 a las 13:55
  • @KatiaSisHost no he entendido nada... de todas formas de donde sale $asd['web']??? si tu estas creando una vaariable llamada $url
    – adrigo
    Commented el 11 may. 2022 a las 14:23
  • $asd['web'] es para almacenar en la db Commented el 11 may. 2022 a las 14:30

¿No es la respuesta que buscas? Examina otras preguntas con la etiqueta o formula tu propia pregunta.