Jump to content
feasso

Ler um JSON (URL) com C#

Recommended Posts

Estou tentando ler utilizando C# um JSON (URL) e ler as informações que estão nele.

 

Algum exemplo de como fazer o Deserialize e pegar tal informação?

Share this post


Link to post
Share on other sites

@itlpps ajustei aqui está 99% funcionado... o único problema é que quando o JSON não traz resultado.

 

Montei um try / catch e dá erro dentro do catch.

 

Veja o código:

public void FazerLogin(string cnpj, string email)
        {
            Demo_Innerlibs.Bling response = AJAX.GET<Demo_Innerlibs.Bling>("https://xxxx.com.br/Api/v2/contato/"+ cnpj +"/json&apikey=xxxxx");

            try
            {
                //CNPJ OU CPF LOCALIZADO NO XXXXX
                //comparar os emails (digitado vs bling) para fazer login
                if (email == response.retorno.contatos[0].contato.email)
                {
                    //email autenticado, criando sessões
                    Session["nome"] = response.retorno.contatos[0].contato.nome;
                    Session["limiteCredito"] = response.retorno.contatos[0].contato.limiteCredito;
                    Session["situacao"] = response.retorno.contatos[0].contato.situacao;
                    Session["cnpj"] = cnpj;

                    Response.Redirect("/default.aspx");
                }
                else
                {
                    //e-mails não conferem
                    Response.Redirect("/login.aspx?erro=2");
                    Response.End();
                }
            }
            catch (Exception)
            {
                throw;
            }             
        }

 

Dá o seguinte erro: Referência de objeto não definida para uma instância de um objeto. (na linha do throw)

Share this post


Link to post
Share on other sites

Entendi.

Faz uma verificação.

if(response == null || response.retorno == null)
{
	//o que acontece quando não tiver dados.
}

 

Faz um tratamento no catch também. Retorne uma mensagem amigável, ou faz outra coisa.

 

Enquanto estava escrevendo esse comentário, me surgiu um dúvida ao fazer a verificação..

Se response for null, não preciso testar response.retorno (óbvio). 

https://stackoverflow.com/questions/35301/what-is-the-difference-between-the-and-or-operators

 

 

Share this post


Link to post
Share on other sites

@itlpps não funcionou o seu if... ele sempre retorna que há dados, mesmo quando não tem.

 

E qualquer coisa que eu tento fazer dentro do catch, dá erro e não faz.

Share this post


Link to post
Share on other sites

Coloca um break point, vê o que tem dentro das variáveis, e vê qual está null, ai você testa ela;

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 Matheus B. Siqueira
      Fala pessoal, meu problema é o seguinte: Tento retornar os valores do json_encode via AJAX, só que na hora de armazenar no const ele da erro de:
      <b>Notice</b>: Undefined variable: videos_pendentes in <b>C:\xampp\htdocs\tcc\monitor.php</b> on line <b>504</b><br /> <br /> <b>Notice</b>: Trying to access array offset on value of type null in <b>C:\xampp\htdocs\tcc\monitor.php</b> on line <b>504</b><br /> null); Não sei qual seria a melhor forma de retornar esses dados, alguma sugestão?
      AJAX:
      $('#btn-lista-videos-carousel').click(function() { var nome_monitor = $("#nomecomp").val(); $.ajax({ url: 'pesquisar_video_pendente.php', data: {nome_monitor}, dataType: 'json', type: "POST", complete: function(data) { const videos_pendentes = JSON.parse(<?php echo json_encode($videos_pendentes[0]) ?>); let itens = ''; let indicadores = ''; $('#botaobaixar').hide(); $('#tudo_monitor').hide(); $('#carouselExampleIndicators_2').hide(); if (videos_pendentes.length > 0) { videos_pendentes.forEach(function(video, indice) { indicadores += '<li data-target="#carouselExampleIndicators" data-slide-to="' + indice + '" class="' + (indice == 0 ? 'active' : '') + '"></li>' itens += '<div data-link_video="' + video.link_video + '" data-id="' + video.idvideo_monitor + '" data-titulo="' + video.titulo_video + '" data-situacao="' + video.situacao + '" class="carousel-item ' + (indice == 0 ? 'active' : '') + '">'; itens += ' <iframe width="100%" height="350" src="https://www.youtube.com/embed/' + video.link_video + '" frameborder="0" allowfullscreen></iframe>' itens += '</div>'; }); $('#tudo_monitor').show(); $('#carouselExampleIndicators').show(); $('#carousel-indicadores').html(indicadores); $('#carousel-itens').html(itens); } else { alert('Nenhum vídeo pendente'); } } }); }); E o meu PHP, a qual busca os dados no mysql:
      <?php $monitor = $_POST['nomecomp']; $servidor = 'localhost'; $usuario = 'root'; $senha = 'root'; $banco = 'onteach'; $conexao = mysqli_connect($servidor, $usuario, $senha, $banco); $consulta = "SELECT * FROM video_monitor WHERE video_monitor.monitor = '$monitor' AND video_monitor.pendente = 1 OR video_monitor.pendente = 3"; $resultados = mysqli_query($conexao, $consulta); $videos_pendentes = array(); while ($video = mysqli_fetch_assoc($resultados)) $videos_pendentes[] = $video; mysqli_free_result($resultados); mysqli_close($conexao); $videos_pendentes = json_encode($videos_pendentes); echo json_encode($videos_pendentes); ?>  
    • By Matheus B. Siqueira
      Olá, tento fazer uma requisição para atualização de item do accordion no mysql, porém apenas um item é atualizado.
      O código funciona da seguinte forma: É buscado perguntas referente ao vídeo selecionado no carousel, logo após, o código da Amostra de Código 1, cria os cards dentro do modal. Cada card é referente a uma pergunta diferente registrada no Banco de Dados.
      Porém, ao tentar atualizar um item do MYSQL, dentro do card, no textarea, o primeiro item (1º pergunta) desse accordion é atualizado, o segundo item (2º pergunta) não é atualizado.
      Cada pergunta possui um id no MYSQL, bem como, um assunto, uma resposta, uma pergunta... de acordo com a Figura 01.
      Vale ressaltar que, de acordo com a Amostra de Código 2, é buscado juntamente com o AJAX, todas as perguntas referente ao vídeo selecionado no carousel.
      Amostra de Código 1:
      $(document).ready(function() { $(function() { $('#responder_duvidas').click(function() { var codigoVideo2 = $('.carousel-item.active').attr('data-link_video'); var accordion2 = ""; $.post("buscar_duvida_monitor_resp.php", { codigo_video_monitor: codigoVideo2, }, function(data2, status) { if (data2 !== "Fail") { $("#dynamic_accordion #accordion").html(accordion2); // Adiciona essa linha $.each(JSON.parse(data2), function (index2, duvida3) { accordion2 += '<div class="card" style="margin: 5px">'; accordion2 += '<div class="card-header" id="heading'+index2+'">'; accordion2 += '<h5 class="mb-0">'; accordion2 += '<button class="btn btn-link" data-toggle="collapse" data-target="#collapse'+index2+'" aria-expanded="true" aria-controls="collapse'+index2+'">'; accordion2 += duvida3.assunto; accordion2 += '</button>'; accordion2 += '</h5>'; accordion2 += '</div>'; accordion2 += '<div id="collapse'+index2+'" class="collapse" aria-labelledby="heading'+index2+'" data-parent="#accordion">'; accordion2 += '<div class="card-body">'; accordion2 += '<div style="background: #ddd; color #fff; padding: 10px 20px; border-radius: 5px">'; accordion2 += duvida3.pergunta; accordion2 += '</div>'; accordion2 += '<hr>'; accordion2 += '<div style="background: #fff; color #fff; padding: 10px 20px; border-radius: 5px">'; accordion2 += '<form method="post" enctype="multipart/form-data">'; accordion2 += '<textarea class="form-control" name="resposta" id="resposta" required>'+duvida3.resposta+'</textarea>'; accordion2 += '<input type="hidden" id="id_duvidas" value="'+duvida3.idduvidas+'" />'; accordion2 += '<br><button type="button" id="enviar_resposta" class="btn btn-success btn-sm">Enviar resposta</button>'; accordion2 += '</form>'; accordion2 += '</div>'; accordion2 += '</div>'; accordion2 += '</div>'; accordion2 += '</div>'; $("#dynamic_accordion #accordion").html(accordion2); }); } }); }); $(document).on("click", "#enviar_resposta",function(){ $.ajax({ url: "atualizar_resposta.php", method: "POST", data: { resposta: $('#resposta').val(), idduvidas: $('#id_duvidas').val() }, success: function(res) { var data = JSON.parse(res); alert((data.success == true) ? "Pergunta atualizada" : "Pergunta não atualizada"); $('.modal-backdrop').remove(); return; } }); // fecha modal $("#modalDuvidas").modal("hide"); }); }); }); Figura 1:

       
       
      Amostra de Código 2:
      <?php if (isset($_POST['idduvidas']) && isset($_POST['resposta'])) { $id_resposta = $_POST['idduvidas']; $resposta = $_POST['resposta']; $servidor = 'localhost'; $usuario = 'root'; $senha = 'root'; $banco = 'onteach'; $conexao = mysqli_connect($servidor,$usuario,$senha,$banco); $consulta2 = "UPDATE duvidas SET duvidas.resposta = '$resposta' WHERE duvidas.idduvidas = '$id_resposta'"; die(json_encode(['success'=>(mysqli_query($conexao, $consulta2))])); } Figura 2 (FIGURA COMPLEMENTAR APRESENTANDO O ACCORDION NO WEBSITE)

       
      Por fim, este tópico auxilia em um tema que é específico, porém, pode ser utilizado para outros fins de programação, bem como, a utilização de definição de váriantes em accordion com maiores itens.
      Desde já, agradeço.
       
    • By lUANZIKA3
      Opa tudo bem?
      Bom eu estou tentando colocar uma api no meu site só que não faço a minima ideia por onde começar pós eu não sem a linguagem JSON, sou leigo estou começando agora só preciso disso para finalizar meu projeto. 
      Aqui está a API 
      curl —X POST -c cookies.txt —d "login=testaccount&password=testaccountpassword1234" https://www.myadcash.com/console/login_proxy.php Ai depois com o token
      curl -X POST -b cookies.txt —d "token=TOKEN&call=get_publisher_detailed_statistics&start_date=2018-08-02&end_date=2018-08-015" https://myadcash.com/console/api_proxy.php A pagina aonde eu quero integrar essa API
      <?php session_start(); require_once 'checklog.php'; require_once 'init.php'; ?> <!DOCTYPE html> <html lang="en"> <head> <meta charset="utf-8"> <meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no"> <title>Hello, world!</title> </head> <body> ....... </body> </html>  
×

Important Information

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