Ir para conteúdo
Fórum Script Brasil
  • 0

Ler JSON paginado com PHP


carlosdombosco

Pergunta

Boa tarde pessoal. Como ler esse JSON em um foreach php

{
"produtos":
[
    {
        "codbar":"123456789",
        "nome":"FEIJÃO",
        "tipo":"UN",
        "prcprd":              4.00,
        "prcprm":              3.50,
        "estoque":             0,
        "categ":097 ,
        "subcateg":09703  }
    {
        "codbar":"987654321",
        "nome":"ARROZ",
        "tipo":"UN",
        "prcprd":              5.00,
        "prcprm":              4.50,
        "estoque":             0,
        "categ":097 ,
        "subcateg":09703} ],"atual":1,"totalPages":20}

 

Agradeço qualquer ajuda.

 

Link para o comentário
Compartilhar em outros sites

2 respostass a esta questão

Posts Recomendados

  • 0

Faz três anos que eu tento resolver o seu problema, mas só hoje é que consegui resolver.

Como o PHP não aceita a sintaxe $teste={"key":"value"}, então eu converti em string, assim: $teste='{"key":"value"}'.

Para converter uma string em json, o PHP usa a função $json=json_decode($teste), mas no seu caso, o PHP retornou null.

Fiquei três anos sem dormir, até que eu finalmente decidi usar o famoso método científico da tentativa e erro.

Eu consegui converter em json o seguinte: {"nome":"arroz"}, depois eu consegui converter em json {"nome":arroz,"estoque":0}, mas eu não consegui converter {"categ":097}. Para consertar, eu fiz assim {"categ":"097"}. Eu fiz o mesmo procedimento no {"subcategor":"09703"}. Outra coisa que o PHP não aceita é converter [{ } { }], eu tive que corrigir para [{ },{ }]. Depois de reeditar os seus dados, o PHP ficou uma maravilha.

<?php
$teste='{"produtos":[{"codbar":"123456789","nome":"FEIJÃO",
        "tipo":"UN","prcprd": 4.00,"prcprm": 3.50,
        "estoque": 0,"categ":"097" ,"subcateg":"09703"},
        {"codbar":"987654321","nome":"ARROZ","tipo":"UN",
        "prcprd": 5.00,"prcprm": 4.50,"estoque": 0,
        "categ":"097","subcateg":"09703"}],"atual":1,"totalPages":20}';
$json=json_decode($teste);
$produtos=$json->produtos;
echo "<table>";
echo "<tr><td>página atual: ".$json->atual;
foreach($produtos as $produto){
    echo "<tr><td>".$produto->nome;
    echo "<td>Estoque: ".$produto->estoque;}
echo "</table>";

No meu caso, valeu a pena resolver. Hoje eu aprendi que existe uma brutal diferença entre escrever echo "página atual"; e echo "<td>página atual"; a diferença é exatamente um espaço!

Outra coisa importante: se você usar o comando 

$json=json_decode($teste,true)

você estará trabalhando com um array, e aí o meu código não é mais válido. Ao invés de usar

$json->produtos, você terá que usar a notação $json['produtos'].

Screenshot_1.png

Editado por Frank K Hosaka
Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,3k
    • Posts
      652,5k
×
×
  • Criar Novo...