Jump to content
edionas

Exportação de dados do portal governo transparente

Recommended Posts

Bom dia
a tempos tenho tentando exportar dados deste portal (https://www.governotransparente.com.br/transparencia/api/v1/json/remessas/1194487) para uma tabela em HTML, pois preciso exibir os dados sem necessidade de ter que ir para uma pagina externa do site.

Share this post


Link to post
Share on other sites

Desculpa, eu não entendi bem a pergunta mas acredito que você queira algo como...

 

<style>
  .wrapper .table {
    border-collapse: collapse;
  }

  .wrapper .table .table-header th {
    font-weight: bold;
    border: 1px solid silver;
    background: #eee;
  }

  .wrapper .table .table-body td {
    border: 1px solid silver;
  }
</style>

<div id="wrapper" class="wrapper"></div>

<!-- estes scripts são polifills para que as Promises (then, catch) e o método fetch funcionem em navegadores mais antigos -->
<script src="https://cdn.jsdelivr.net/npm/es6-promise@4/dist/es6-promise.auto.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/fetch/3.0.0/fetch.min.js"></script>

<script>
(function () { // utilizado para isolar as variáveis e não causar problemas de segurança futuros
  var url = 'https://www.governotransparente.com.br/transparencia/api/v1/json/remessas/1194487';
  var resultWrapper = document.getElementById('wrapper');

  // aqui fica a requisição e as ações sobre cada uma delas
  fetch(url)
    .then(checkServerResponse)
    .then(toJSON)
    .then(createTable)
    ['catch'](showErrorMessage); // caso aconteça algum erro em qualquer uma das ações anteriores, faça o tratamento de erros ;-)

  // tratamento de erros
  function showErrorMessage(err) {
    resultWrapper.innerHTML = '<pre>Erro:\r' + err.toString() + '</pre>';
  }

  // verifica se a resposta do servidor foi um sucesso
  function checkServerResponse(res) {
    if (res.ok) {
      return res;
    }
    throw new Error('Unable to fetch data from server. Status: ' + res.status);
  }

  // tenta converter a resposta do servidor em objeto json manipulável ao invés de texto puro
  function toJSON(res) {
    return res.json();
  }

  // converte os dados em tabela e insere no resultWrapper
  function createTable(data) {
    var heads = Object.keys(data).map(function (item) {
      return '<th>' + item + '</th>';
    }).join('');

    var contents = Object.values(data).map(function (item) {
      return '<td>' + item + '</td>';
    }).join('');

    resultWrapper.innerHTML = [
      '<table class="table">',
        '<thead class="table-header">',
          '<tr>',
              heads,
          '</tr>',
        '</thead>',
        '<tbody class="table-body">',
          '<tr>',
              contents,
          '</tr>',
        '</tbody>',
      '</table>',
    ].join('');
  }
});
</script>

Você pode ver o código funcionando aqui: https://jsfiddle.net/gkezhv85/5/

 

Tomei a liberdade de fazer um código mais moderno, não utilizando jQuery e utilizando funcionalidades que os navegadores mais modernos já utilizam como o fetch e as Promises, o que faz o código ficar, na miha opinião, mais organizado, já que cada ação fica em uma função isolada.

 

Também optei por fazer dessa maneira para instigar os estudos do pessoal aqui no fórum... espero ter ajudado, qualquer coisa dá um grito :-D

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

  • Similar Content

    • By guzulino
      Eu preciso criar um sistema de busca em tempo real vamos dizer assim, na realidade eu até consegui achar boa parte dele.
      <form onsubmit="return false;"> <input id="campo_cpu" type="text" name="nome_cpu" placeholder="Modelo do processador"> </form> <script src="auto-complete.js"></script> <script> var demo1 = new autoComplete({ selector: '#campo_cpu', minChars: 1, source: function(term, suggest){ term = term.toLowerCase(); var choices = ['ActionScript', 'AppleScript', 'Asp', 'Assembly', 'BASIC', 'Batch', 'C', 'C++', 'CSS', 'Clojure', 'COBOL', 'ColdFusion', 'Erlang', 'Fortran', 'Groovy', 'Haskell', 'HTML', 'Java', 'JavaScript', 'Lisp', 'Perl', 'PHP', 'PowerShell', 'Python', 'Ruby', 'Scala', 'Scheme', 'SQL', 'TeX', 'XML']; var suggestions = []; for (i=0;i<choices.length;i++) if (~choices[i].toLowerCase().indexOf(term)) suggestions.push(choices[i]); suggest(suggestions); } }); </script> Eu consegui esse código e ele funciona tranquilamente, mas isso é só um teste, o usuário vai digitar o que ele precisa e no banco de dados eu mais de 5000 registros, então eu preciso que seja feita uma consulta no banco de dados para que ele mostre o que tem lá, acho que colocar 5000 numa string é um #@?&#036;%~ trampo além de eu achar que vai dar caquinha, o problema é que eu não faço a mínima ideia de como fazer isso, eu acho que é tipo uma consulta no banco a cada caractére digitado mostrando somente os resultados compatíveis, mas como disse antes não tenho ideia, se alguém agradeço desde já. Valeu
    • By tiagosoliver
      Boa noite galera,
       
      Estou precisando a partir de um json serializado, criar um menu dinâmico, pelo javascript. O json e a estrutura do menu eu coloquei na imagem em anexo. Obrigado desde já.

    • By asacap1000
      Galera estou com uma dúvida, tenho a parte de envio de dados para em Post, com encode json e curl. Já pesquisei em todos os lugares e não encontrei nada pra clarear as idéias.
       
      a parte final é essa do envio (cliente)
      header("Content-Type: ".$mediaType); $headers = array(); $headers[] = "Accept: ".$mediaType; $headers[] = "Accept-Charset: ".$charSet; $headers[] = "Accept-Encoding: ".$mediaType; $headers[] = "Content-Type: ".$mediaType.";charset=".$charSet; $headers[] = "Authorization: Basic ".$AuthorizationHeaderBase64; $ch = curl_init(); curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE); curl_setopt($ch, CURLOPT_URL, $url); curl_setopt($ch, CURLOPT_POST, 1); curl_setopt($ch, CURLOPT_POSTFIELDS,"contatos=$contatos"); #campos que serão enviados curl_setopt($ch, CURLOPT_USERPWD, $AuthorizationHeaderBase64); curl_setopt($ch, CURLOPT_HEADER, $headers); curl_setopt($ch, CURLINFO_HTTP_CODE, true); curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true); curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);#ativa se for ter retorno do chamada $result = curl_exec($ch); $result2 = json_decode($result,true); curl_close($ch); if($result2 === false) { $err = 'Curl error: ' . curl_error($ch); $result2 = $err; echo "This is text".$err; } var_dump ($result2);  
      Preciso de ajuda para entender como deve ser feito a página que será chamada, no caso lado servidor.
       
      Como pode ver tenho um header configurado e será enviado com chave de autorização agora como isso é feito do lado servidor??
       
      Se alguém puder me ajudar, preciso entregar este webservice sexta feira 18/10. Todos os dados recebidos serão salvos no BD Oracle.
       
       
    • By Eli Lopes
      O código em JS abaixo alimenta o combobox "programas" (html <select id="programas">) com uma lista em Json (lista-regiao-programas.json) de acordo com a escolha no combo "regioes" (html <select id="regioes">).
       
      Mas como eu faço para alimentar o combobox "municípios" (html <select id="municipios">) baseado no combo em "regiões" com a lista Json "combox-municipios.json" ?
       
      esolhe 1 programa -> alimenta regiões -> escolhe 1 região -> alimenta "município" (3 select dropdwon em cascata / aninhados)...
       
      HTML ->
      <div class="form-group"> <!-- dropdown Regiões --> <label for="regioes">Região de integração</label> <select id="regioes"> <option value=""></option> </select> </div> <div class="form-group"> <!-- dropdown Programas --> <label for="programas">Programa desenvolvido</label> <select id="programas"></select> </div> JS JSON ->
      $(document).ready(function(){ $.getJSON('SIGPLAM2/javaScript/lista-regiao-programas.json', function(data){ var items = []; var options = '<option value="">escolha uma região</option>'; $.each(data, function(key, val){ options += '<option value="' + val.nome + '">' + val.nome + '</option>'; }); $("#regioes").html(options); $("#regioes").change(function(){ var options_programas = ''; var str = ""; $("#regioes option:selected").each(function(){ str += $(this).text(); }); $.each(data, function(key, val){ if(val.nome == str){ $.each(val.cidades, function(key_city, val_city){ options_programas += '<option value="' + val_city + '">' + val_city + '</option>'; }); } }); $("#programas").html(options_programas); }).change(); }); });  
    • By Rengavitp
      Boa tarde pessoal, sou novo ainda em java e estou com a seguinte dificuldade, preciso imprimir um pedido de venda que vem de um sistema no formato json, ja tentei de diversas formas mas nenhuma deu certo, alguem pode me ajudar? Vou colocar abaixo o arquivo json e o metodo mais recente que testei, porem ele só mostra null, sei que o problema deve estar na forma de percorrer o json, mas nao faço ideia de como fazer.
       
      { "retorno":{ "pedidos":[ { "pedido":{ "desconto":"15,00", "observacoes":"Testando o campo observações do pedido", "observacaointerna":"Testando o campo observações internas do pedido", "data":"2017-07-28", "numero":"1", "numeroPedidoLoja":"100000001", "vendedor":"João da Silva", "valorfrete":"22.50", "totalprodutos":"139.98", "totalvenda":"147.48", "situacao":"Em Aberto", "loja": "123456789", "dataPrevista":"2017-07-28", "tipoIntegracao":"Magento", "cliente":{ "nome":"Organisys Software", "cnpj":"00.000.000/0000-1", "ie":"0000000000", "rg":"162788484", "endereco":"Rua Visconde de São Gabriel", "numero":"000", "complemento":"Sala 000", "cidade":"Bento Gonçalves", "bairro":"Cidade Alta", "cep":"95.700-000", "uf":"RS", "email":"teste@organisys.com.br", "celular":"", "fone":"(54) 2222-22222" }, "itens":[ { "item":{ "codigo":1234, "descricao":"Mochila", "quantidade":"2.0000", "valorunidade":"69.990000000", "precocusto":null, "descontoItem":"0.00", "un":"Pç", "pesoBruto": "0.520", "largura": "20", "altura": "18", "profundidade": "15", "unidadeMedida": "cm", "descricaoDetalhada": "Ecobag esportiva" } } ], "parcelas":[ { "parcela":{ "valor":"73.74", "dataVencimento":"2017-07-28 00:00:00", "obs":"Teste obs 1", "forma_pagamento":{ "id":"1", "descricao":"Dinheiro", "codigoFiscal":"1" } } }, { "parcela":{ "valor":"73.74", "dataVencimento":"2017-08-28 00:00:00", "obs":"Teste obs 2", "forma_pagamento":{ "id":"1", "descricao":"Dinheiro", "codigoFiscal":"1" } } } ], "nota":{ "serie":"1", "numero":"012346", "dataEmissao":"2017-08-28 00:00:00", "situacao":"1", "chaveAcesso":"43140401056417000139550010000123461496923524", "valorNota": "147.48" }, "transporte":{ "transportadora":"Transportadora", "cnpj":"00.000.000/0000-1", "tipo_frete":"R", "volumes":[ { "volume":{ "idServico":"1231293", "servico":"SEDEX 10", "codigoRastreamento":"SX052413651BR", "dataSaida":"2017-07-28", "prazoEntregaPrevisto":"1", "valorFretePrevisto":"11.25", "valorDeclarado": "0.00", "remessa":{ "numero":"12345AAA", "dataCriacao":"2017-10-17" }, "dimensoes":{ "peso":"1.553", "altura":"20", "largura":"15", "comprimento":"20", "diametro":"0" } } }, { "volume":{ "idServico":"1231293", "servico":"SEDEX 10", "codigoRastreamento":"SX052413651BR", "dataSaida":"2017-07-28", "prazoEntregaPrevisto":"1", "valorFretePrevisto":"11.25", "remessa":null, "dimensoes":{ "peso":"1.553", "altura":"20", "largura":"15", "comprimento":"20", "diametro":"0" } } } ], "enderecoEntrega":{ "nome":"Organisys Software Entrega", "endereco":"Rua Assis Brasil", "numero":"222", "complemento":"", "cidade":"Bento Gonçalves", "bairro":"Centro", "cep":"95.700-000", "uf":"RS" } } } } ] } } package javaapplication2; import java.io.FileNotFoundException; import java.io.FileReader; import java.io.IOException; import org.json.simple.JSONObject; import org.json.simple.parser.JSONParser; import org.json.simple.parser.ParseException; public class JSONRead { public static void main(String[] args) { JSONObject jsonObject; //Cria o parse de tratamento JSONParser parser = new JSONParser(); //Variaveis que irao armazenar os dados do arquivo JSON String nome; String sobrenome; String estado; String pais; try { //Salva no objeto JSONObject o que o parse tratou do arquivo jsonObject = (JSONObject) parser.parse(new FileReader( "//users/vagnermocelin/teste.json")); //Salva nas variaveis os dados retirados do arquivo numero = (String) jsonObject.get("numero"); vendedor = (String) jsonObject.get("vendedor"); total_produtos = (String) jsonObject.get("total_produtos"); total_venda = (String) jsonObject.get("total_venda"); System.out.printf( "Numero: %s\nVendedor: %s\nProdutos: %s\nVenda: %s\n", numero, vendedor, total_produtos, total_venda); } //Trata as exceptions que podem ser lançadas no decorrer do processo catch (FileNotFoundException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } catch (ParseException e) { // TODO Auto-generated catch block e.printStackTrace(); } } }  
×

Important Information

Ao usar o fórum, você concorda com nossos Terms of Use.