Read Json Object with PHP

Asked

Viewed 103 times

0

Good evening I’m trying to read the following json with php:

{
 "kind": "customsearch#search",
 "url": {
  "type": "application/json",
  "template": "https://www.googleapis.com/customsearch/v1?q={searchTerms}&num={count?}&start={startIndex?}&lr={language?}&safe={safe?}&cx={cx?}&sort={sort?}&filter={filter?}&gl={gl?}&cr={cr?}&googlehost={googleHost?}&c2coff={disableCnTwTranslation?}&hq={hq?}&hl={hl?}&siteSearch={siteSearch?}&siteSearchFilter={siteSearchFilter?}&exactTerms={exactTerms?}&excludeTerms={excludeTerms?}&linkSite={linkSite?}&orTerms={orTerms?}&relatedSite={relatedSite?}&dateRestrict={dateRestrict?}&lowRange={lowRange?}&highRange={highRange?}&searchType={searchType}&fileType={fileType?}&rights={rights?}&imgSize={imgSize?}&imgType={imgType?}&imgColorType={imgColorType?}&imgDominantColor={imgDominantColor?}&alt=json"
 },
 "queries": {
  "request": [
   {
    "title": "Google Custom Search - fome no mundo",
    "totalResults": "246000",
    "searchTerms": "fome no mundo",
    "count": 10,
    "startIndex": 1,
    "inputEncoding": "utf8",
    "outputEncoding": "utf8",
    "safe": "off",
    "cx": "012832983490068410854:179lpq_sxhw",
    "filter": "1",
    "gl": "br",
    "cr": "countryBR",
    "googleHost": "google.com",
    "hq": "brasilia"
   }
  ],
  "nextPage": [
   {
    "title": "Google Custom Search - fome no mundo",
    "totalResults": "246000",
    "searchTerms": "fome no mundo",
    "count": 10,
    "startIndex": 11,
    "inputEncoding": "utf8",
    "outputEncoding": "utf8",
    "safe": "off",
    "cx": "012832983490068410854:179lpq_sxhw",
    "filter": "1",
    "gl": "br",
    "cr": "countryBR",
    "googleHost": "google.com",
    "hq": "brasilia"
   }
  ]
 },
 "context": {
  "title": "buscapoliticos",
  "facets": [
   [
    {
     "label": "politico_politicos_brasilia",
     "anchor": "politico, politicos, brasilia",
     "label_with_op": "more:politico_politicos_brasilia"
    }
   ]
  ]
 },
 "searchInformation": {
  "searchTime": 0.430369,
  "formattedSearchTime": "0.43",
  "totalResults": "246000",
  "formattedTotalResults": "246,000"
 },
 "items": [
  {
   "kind": "customsearch#result",
   "title": "O Veganismo vai acabar com a fome no mundo - Jbr. - Jbr.",
   "htmlTitle": "O Veganismo vai acabar com a \u003cb\u003efome no mundo\u003c/b\u003e - Jbr. - Jbr.",
   "link": "http://www.jornaldebrasilia.com.br/blogs-e-colunas/minha-brasilia/veganismo/",
   "displayLink": "www.jornaldebrasilia.com.br",
   "snippet": "Design e desenvolvimento por. O Veganismo vai acabar com a fome no mundo. (\nc) jornaldebrasilia.com.br (c) 2006 - 2018 Jornal de Brasília Notícias Digitais Ltda \n- Todos os direitos reservados ...",
   "htmlSnippet": "Design e desenvolvimento por. O Veganismo vai acabar com a \u003cb\u003efome no mundo\u003c/b\u003e. (\u003cbr\u003e\nc) jornaldebrasilia.com.br (c) 2006 - 2018 Jornal de \u003cb\u003eBrasília\u003c/b\u003e Notícias Digitais Ltda \u003cbr\u003e\n- Todos os direitos reservados ...",
   "cacheId": "vdcHA8gA9BYJ",
   "formattedUrl": "www.jornaldebrasilia.com.br/blogs-e-colunas/...brasilia/veganismo/",
   "htmlFormattedUrl": "www.jornalde\u003cb\u003ebrasilia\u003c/b\u003e.com.br/blogs-e-colunas/...\u003cb\u003ebrasilia\u003c/b\u003e/veganismo/",
   "pagemap": {
    "cse_thumbnail": [
     {
      "width": "300",
      "height": "168",
      "src": "https://encrypted-tbn0.gstatic.com/images?q=tbn:ANd9GcQYhsExaYL6i2MdTtLppfIivg4OLPYMPK3RaA7RIO81UpJxXoBwp6EErrhV"
     }
    ],
    "metatags": [
     {
      "viewport": "width=device-width, initial-scale=1.0",
      "theme-color": "#ffffff",
      "og:locale": "pt_BR",
      "og:type": "article",
      "og:title": "O Veganismo vai acabar com a fome no mundo - Jbr.",
      "og:description": "Veganismo é o estilo de vida adotado por milhares de pessoas que se recusam a consumir qualquer produto de origem animal. Além da alimentação, eles não usam couro, lã, cosméticos e nada que tenha origem nos bichos. Nem ovo, nem mel. Nada. Alana Rox é apresentadora do programa “Diário de uma vegana” (GNT), e neste …",
      "og:url": "http://www.jornaldebrasilia.com.br/blogs-e-colunas/minha-brasilia/veganismo/",
      "og:site_name": "Jbr.",
      "article:tag": "alimentação",
      "article:section": "Minha Brasília",
      "article:published_time": "2018-03-14T15:00:11-03:00",
      "article:modified_time": "2018-03-14T10:58:17-03:00",
      "og:updated_time": "2018-03-14T10:58:17-03:00",
      "og:image": "http://www.jornaldebrasilia.com.br/wp-content/uploads/2018/03/ROX-e1521034357623.png",
      "og:image:width": "1000",
      "og:image:height": "560",
      "twitter:card": "summary",
      "twitter:description": "Veganismo é o estilo de vida adotado por milhares de pessoas que se recusam a consumir qualquer produto de origem animal. Além da alimentação, eles não usam couro, lã, cosméticos e nada que tenha origem nos bichos. Nem ovo, nem mel. Nada. Alana Rox é apresentadora do programa “Diário de uma vegana” (GNT), e neste […]",
      "twitter:title": "O Veganismo vai acabar com a fome no mundo - Jbr.",
      "twitter:image": "http://www.jornaldebrasilia.com.br/wp-content/uploads/2018/03/ROX-e1521034357623.png"
     }
    ],
    "cse_image": [
     {
      "src": "http://www.jornaldebrasilia.com.br/wp-content/uploads/2018/03/ROX-e1521034357623.png"
     }
    ]
   }
  },
  {
   "kind": "customsearch#result",
   "title": "Água e alimentação: países debatem estratégias no 2º dia do Fórum ...",
   "htmlTitle": "Água e alimentação: países debatem estratégias no 2º dia do Fórum ...",
   "link": "https://g1.globo.com/df/distrito-federal/noticia/agua-e-alimentacao-paises-debatem-estrategias-no-2-dia-do-forum-mundial.ghtml",
   "displayLink": "g1.globo.com",
   "snippet": "20 mar. 2018 ... A relação entre água e segurança alimentar pautou as discussões no segundo \ndia do Fórum Mundial da Água, em Brasília, nesta terça-feira (20). ... O \nespecialista em segurança alimentar destacou que, apesar dos esforços \ninternacionais para reduzir a pobreza, a fome crônica cresce no mundo.",
   "htmlSnippet": "20 mar. 2018 \u003cb\u003e...\u003c/b\u003e A relação entre água e segurança alimentar pautou as discussões no segundo \u003cbr\u003e\ndia do Fórum Mundial da Água, em \u003cb\u003eBrasília\u003c/b\u003e, nesta terça-feira (20). ... O \u003cbr\u003e\nespecialista em segurança alimentar destacou que, apesar dos esforços \u003cbr\u003e\ninternacionais para reduzir a pobreza, a \u003cb\u003efome\u003c/b\u003e crônica cresce no \u003cb\u003emundo\u003c/b\u003e.",
   "cacheId": "S505gpMtTBQJ",
   "formattedUrl": "https://g1.globo.com/.../agua-e-alimentacao-paises-debatem-estrategias-no-2- dia-do-forum-mundial.ghtml",
   "htmlFormattedUrl": "https://g1.globo.com/.../agua-e-alimentacao-paises-debatem-estrategias-no-2- dia-do-forum-mundial.ghtml",
   "pagemap": {
    "cse_thumbnail": [
     {
      "width": "300",
      "height": "168",
      "src": "https://encrypted-tbn3.gstatic.com/images?q=tbn:ANd9GcR5bc3eNSNvLOGv1_kdpXsXFbL84G0zfwnMERCMRBQsKzrDZSPsr8rV6MWm"
     }
    ],
    "metatags": [
     {
      "viewport": "width=device-width, initial-scale=1",
      "fb:pages": "180562885329138, 219182291443741, 116428248441032, 245000562218276, 192158074155314, 200292646669956, 182638081814153, 134115896703387, 131554330279675, 150737454992906, 159354314154963, 163750819397, 746858798714372, 246628845518037, 569361039814687, 252487748264782, 322744631148014, 718028201673172",
      "ia:markup_url": "https://g1.globo.com/facebook/ia/https://g1.globo.com/df/distrito-federal/noticia/agua-e-alimentacao-paises-debatem-estrategias-no-2-dia-do-forum-mundial.ghtml",
      "title": "Água e alimentação: países debatem estratégias no 2º dia do Fórum Mundial",
      "og:title": "Água e alimentação: países debatem estratégias no 2º dia do Fórum Mundial",
      "og:description": "Representantes de 172 países participam do evento, considerado maior encontro mundial sobre o tema. Programação segue até sexta.",
      "og:image": "https://s2.glbimg.com/CpvLkBnzqIP5BCke7x499hO_xa4=/1200x/smart/filters:cover():strip_icc()/i.s3.glbimg.com/v1/AUTH_59edd422c0c84a879bd37670ae4f538a/internal_photos/bs/2018/8/k/U3zgy8RBS1pHxOjQSHRQ/forummundial-1.jpg",
      "og:image:width": "1200",
      "og:type": "article",
      "og:locale": "pt_BR",
      "og:site_name": "G1",
      "og:url": "https://g1.globo.com/df/distrito-federal/noticia/agua-e-alimentacao-paises-debatem-estrategias-no-2-dia-do-forum-mundial.ghtml",
      "fb:app_id": "289255557788943",
      "twitter:card": "summary_large_image",
      "twitter:title": "Água e alimentação: países debatem estratégias no 2º dia do Fórum Mundial",
      "twitter:description": "Representantes de 172 países participam do evento, considerado maior encontro mundial sobre o tema. Programação segue até sexta.",
      "twitter:image": "https://s2.glbimg.com/CpvLkBnzqIP5BCke7x499hO_xa4=/1200x/smart/filters:cover():strip_icc()/i.s3.glbimg.com/v1/AUTH_59edd422c0c84a879bd37670ae4f538a/internal_photos/bs/2018/8/k/U3zgy8RBS1pHxOjQSHRQ/forummundial-1.jpg",
      "referrer": "always"
     }
    ],
    "videoobject": [
     {
      "name": "Príncipe-herdeiro do Japão visita o Fórum Mundial da Água",
      "thumbnailurl": "https://s04.video.glbimg.com/x720/6594255.jpg",
      "datepublished": "2018-03-20T21:40:57.462Z",
      "uploaddate": "2018-03-20T21:40:57.462Z",
      "description": "Príncipe-herdeiro do Japão visita o Fórum Mundial da Água"
     },
     {
      "name": "ONU divulga alertas sobre a crise hídrica que o mundo pode enfrentar",
      "thumbnailurl": "https://s01.video.glbimg.com/x720/6590052.jpg",
      "datepublished": "2018-03-20T21:40:57.462Z",
      "uploaddate": "2018-03-20T21:40:57.462Z",
      "description": "ONU divulga alertas sobre a crise hídrica que o mundo pode enfrentar"
     }
    ],
    "newsarticle": [
     {
      "mainentityofpage": "True",
      "name": "Água e alimentação: países debatem estratégias no 2º dia do Fórum Mundial",
      "headline": "Água e alimentação: países debatem estratégias no 2º dia do Fórum Mundial",
      "alternatename": "Representantes de 172 países participam do evento, considerado maior encontro mundial sobre o tema. Programação segue até sexta.",
      "alternativeheadline": "Representantes de 172 países participam do evento, considerado maior encontro mundial sobre o tema. Programação segue até sexta.",
      "datepublished": "2018-03-20T21:56:12.605Z",
      "datemodified": "2018-03-20T21:56:56.822Z",
      "articlebody": "Ministro da Integração Nacional, Helder Barbalho (em pé), e governadores Geraldo Alckmin (PSDB) e Rodrigo Rollemberg (PSB) durante apresentação no 8º Fórum Mundial da Água (Foto: Dênio..."
     }
    ],
    "imageobject": [
     {
      "url": "https://s2.glbimg.com/zzignOjgHuh7HhPz2jRqQ_HDTgg=/696x390/smart/filters:cover():strip_icc()/i.s3.glbimg.com/v1/AUTH_59edd422c0c84a879bd37670ae4f538a/internal_photos/bs/2018/8/k/U3zgy8RBS1pHxOjQSHRQ/forummundial-1.jpg",
      "width": "696",
      "height": "390"
     },
     {
      "url": "https://s.glbimg.com/jo/g1/static/live/g1_amp/img/g1_logo_json_ld.png",
      "width": "94",
      "height": "60"
     }
    ],
    "person": [
     {
      "name": "Marília Marques"
     }
    ],
    "organization": [
     {
      "name": "G1"
     }
    ],
    "webpage": [
     {
      "image": "https://s2.glbimg.com/CpvLkBnzqIP5BCke7x499hO_xa4=/1200x/smart/filters:cover():strip_icc()/i.s3.glbimg.com/v1/AUTH_59edd422c0c84a879bd37670ae4f538a/internal_photos/bs/2018/8/k/U3zgy8RBS1pHxOjQSHRQ/forummundial-1.jpg"
     }
    ],
    "cse_image": [
     {
      "src": "https://s01.video.glbimg.com/x720/6590052.jpg"
     }
    ]
   }
  }

    ]
   }

This is a google search structure, I want to display the first title and link of the first result that is in "items", I used the following code but I get error:

<?php 

$url = "link da api";

$streamSSL = stream_context_create(array(
    "ssl"=>array(
        "cafile" => "../cacert.pem",
        "verify_peer"=> true,
        "verify_peer_name"=> true
    )
));

$dados = file_get_contents($url, false, $streamSSL);

$ler = json_decode($dados);

foreach($ler as $conte){

    echo "Titulo".$conte->items[1]->title;  

}

?>
  • Make a var_dump($ler); and see which structure is returned

1 answer

2


Since you only want to display data from a record, it is not necessary to use the foreach, just go through the JSON using the indices, for example:

<?php

$url = "link da api";

$streamSSL = stream_context_create([
    "ssl"=>array(
        "cafile" => "../cacert.pem",
        "verify_peer"=> true,
        "verify_peer_name"=> true
    )
]);

$dados = file_get_contents($url, false, $streamSSL);

$ler = json_decode($dados);

/* Acessa os registros de "items", captura o primeiro registro e retorna o título */
echo "Título: {$ler->items[0]->title}", PHP_EOL;

/* Acessa os registros de "items", captura o primeiro registro e retorna o link */
echo "Link: {$ler->items[0]->link}";

Browser other questions tagged

You are not signed in. Login or sign up in order to post.