Ir para conteúdo
Alexandre Barbosa Gontijo

Erro string indice must integers Json

Recommended Posts

Sou novo no Python e estou "agarrado" em um problema, segue o código :


        response = requests.get("http://www.testecliente.com.br/ApiTeste/GetDadosCartaoCliente?CL_COD=1" )
        retorno = response.content
        retorno = retorno.decode("utf-8")
        json_data = json.loads(retorno)
       CL_NOME = json_data['CL_NOME']
       print ("NOME=" + CL_NOME)

 

aparece o seguinte erro :

TypeError : string indices must be integers 

 

se eu mando imprimir o json_data aparece :

    [{"CC_COD":16,"CL_COD":40,"CC_NUMERO_CARTAO":"68453217628884","CC_BANDEIRA":"visa","CC_VALIDADE":"09/21","CC_COD_SEGURANCA":"188","CC_FUNCAO":"C","CC_PRINCIPAL":"S","CL_NOME":"Alexandre Luiz"}]

 

alguém pode me ajudar ?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Execute type(json_data) no código. Pela msg de erro tem toda cara de ser uma string e não um objeto json.

Compartilhar este post


Link para o post
Compartilhar em outros sites
13 minutos atrás, _Isis_ disse:

type(json_data)

       

Fiz isso mas não adiantou, mesmo erro :

 

       retorno = retorno.decode("utf-8")
        json_data = json.loads(retorno)
        type(json_data)        
                
        CL_NOME = json_data['CL_NOME']
        print ("NOME=" + CL_NOME)

Compartilhar este post


Link para o post
Compartilhar em outros sites

Eu não disse que isso consertaria o problema. Falei que a mensagem dá a entender que o tipo da variável é string e não um objeto json. O type retorna o tipo da variável. O que está escrito na tela?

Compartilhar este post


Link para o post
Compartilhar em outros sites
22 horas atrás, _Isis_ disse:

Eu não disse que isso consertaria o problema. Falei que a mensagem dá a entender que o tipo da variável é string e não um objeto json. O type retorna o tipo da variável. O que está escrito na tela?

Desculpe é que estou tento meu primeiro contato com o Python. Você tem razão, o retorno do type é <class 'str'>

 

Mas se mando imprimir a variável json_data aparece :

[{"CC_COD":16,"CL_COD":40,"CC_NUMERO_CARTAO":"68453217628884","CC_BANDEIRA":"visa","CC_VALIDADE":"09/21","CC_COD_SEGURANCA":"188","CC_FUNCAO":"C","CC_PRINCIPAL":"S","CL_NOME":"Alexandre Luiz"}] 

 

o que preciso fazer ?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Repara que o objecto está contido num array. Para imprimir o nome tens de aceder a json_data[0]['CL_NOME']

Compartilhar este post


Link para o post
Compartilhar em outros sites
17 horas atrás, wootzor disse:

Repara que o objecto está contido num array. Para imprimir o nome tens de aceder a json_data[0]['CL_NOME']

Bom dia Wootzor, fiz o que você falou mas aparece o erro :

 

CL_NOME = json_data[0]['CL_NOME']

TypeError : string indices must be integers

 

antes desta linha eu faço um print (type(json_data))

e aparece <class 'str'>

 

se eu mando imprimir a string json_data aparece :

[{"CC_COD":16,"CL_COD":40,"CC_NUMERO_CARTAO":"68453217628884","CC_BANDEIRA":"visa","CC_VALIDADE":"09/21","CC_COD_SEGURANCA":"188","CC_FUNCAO":"C","CC_PRINCIPAL":"S","CL_NOME":"Alexandre Luiz"}] 

 

 

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

Vê se este exemplo ajuda e tenta adaptar às necessidades:

 

import json

def main():
  data = '[{"CC_COD":16,"CL_COD":40,"CC_NUMERO_CARTAO":"68453217628884","CC_BANDEIRA":"visa","CC_VALIDADE":"09/21","CC_COD_SEGURANCA":"188","CC_FUNCAO":"C","CC_PRINCIPAL":"S","CL_NOME":"Alexandre Luiz"}]'
  json_data = json.loads(data)
  print(json_data[0]['CL_NOME'])

if __name__ == '__main__':
  main()

 

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

Crie uma conta ou entre para comentar

Você precisar ser um membro para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar Agora

  • Conteúdo Similar

    • Por André_Maronne
      Olá pessoal,
      alguém sabe como eu adiciono o header no script abaixo?
       
      headers:{
             
                  'Authorization' : 'Bearer  '+accessToken,
       
                   'Content-Type' : 'application/json'
       
                            }
       
       
      -------------------------------------   SCRIPT PARA ADICIONAR O HEADER    -----------------------------------
       
       jQuery.get('data.json', function (data) {
         
          var videosConfig = {
                      list: tvApp.videoList,
                      data: JSON.parse(data),
                      callback: function () {
                          var movies = document.querySelectorAll('.navigable');
                          var i=0;
                          for (i = 0; i < movies.length; i += 1) {
                              movie = movies;
                              movie.removeEventListener('focus', onFocus);
                              movie.addEventListener('focus', onFocus);
                          }

                          function documentOffsetTop(el) {
                              return el.offsetTop + ( el.offsetParent ? documentOffsetTop(el.offsetParent) : 0 );
                          }
                          function onFocus(e) {
                              console.log(e);
                              var el = document.querySelector('.navigable.focused');
                              var top = documentOffsetTop(el) - ( window.innerHeight / 3 );
                              app.videoList.parentNode.scrollTop = top;
                              app.stateObj.videoId = el.dataset.videoid;
                              app.stateObj.videoURL = el.dataset.video;
                          }
                      }
                  };
                  new VideoList(videosConfig);
                  bishopNavigation.focus(document.getElementById('video-list').firstElementChild, 'keyboard');
             
        
                     });
       
    • Por Jeferson Jacob Guapos
      Olá, amigos! Tenho este json (http://189.45.207.60:3004/eventos) e preciso separá-lo, juntando todos do mesmo "out_idregiao" e exibí-lo separado por regiões... confesso que é a primeira vez q utilizo o json e to me batendo bastante...
      preciso exibir os dados da mesma forma como exibido neste link: http://mtgsc.com.br/eventos.php
       
      <?php $json_file = file_get_contents("http://189.45.207.60:3004/eventos"); $json_str = json_decode($json_file, true); ?> Não tenho nem ideia de como fazer para separar por regiões... alguém pode me dar uma luz, por favor?
      Muito obrigado!
    • Por Rengavitp
      Boa noite pessoal, 
       
      Estou precisando gerar um mapa com a api do google maps, achei um modelo na net  e consegui adaptar para o que eu preciso, porém as coordenadas dos pontos que serão adicionados no maps estão no formato json e estático no mesmo arquivo. eu preciso fazer com que ao invés de carregar dali eu tenha um arquivo json local que é lido, assim posso gerar esse arquivo antes de abrir o mapa. Alguém pode me ajudar, sou novo com javascript e com json, não estou conseguindo sozinho, se alguém puder ajudar agradeço. abaixo segue o map.js para análise.
      var map; var infoWindow; //aqui que preciso mudar var markersData =[ { lat: -27.6386333, lng: -48.745, nome: "Barra", morada1:"Rua Diogo Cão, 125", morada2: "Praia da Barra", codPostal: "3830-772 Gafanha da Nazaré" }, { lat: -27.59955, lng: -48.7498167, nome: "Costa Nova", morada1:"Quinta dos Patos, n.º 2", morada2: "Praia da Costa Nova", codPostal: "3830-453 Gafanha da Encarnação" }, { lat: -27.6247167, lng: -48.7129167, nome: "Gafanha da Nazaré", morada1:"Rua dos Balneários do Complexo Desportivo", morada2: "Gafanha da Nazaré", codPostal: "3830-225 Gafanha da Nazaré" } ]; function initialize() { var mapOptions = { center: new google.maps.LatLng(40.601203,-8.668173), zoom: 9, mapTypeId: 'roadmap', }; map = new google.maps.Map(document.getElementById('map-canvas'), mapOptions); // cria a nova Info Window com referência à variável infowindow // o conteúdo da Info Window será atribuído mais tarde infoWindow = new google.maps.InfoWindow(); // evento que fecha a infoWindow com click no mapa google.maps.event.addListener(map, 'click', function() { infoWindow.close(); }); // Chamada para a função que vai percorrer a informação // contida na variável markersData e criar os marcadores a mostrar no mapa displayMarkers(); } google.maps.event.addDomListener(window, 'load', initialize); // Esta função vai percorrer a informação contida na variável markersData // e cria os marcadores através da função createMarker function displayMarkers(){ // esta variável vai definir a área de mapa a abranger e o nível do zoom // de acordo com as posições dos marcadores var bounds = new google.maps.LatLngBounds(); // Loop que vai estruturar a informação contida em markersData // para que a função createMarker possa criar os marcadores for (var i = 0; i < markersData.length; i++){ var latlng = new google.maps.LatLng(markersData[i].lat, markersData[i].lng); var nome = markersData[i].nome; var morada1 = markersData[i].morada1; var morada2 = markersData[i].morada2; var codPostal = markersData[i].codPostal; createMarker(latlng, nome, morada1, morada2, codPostal); // Os valores de latitude e longitude do marcador são adicionados à // variável bounds bounds.extend(latlng); } // Depois de criados todos os marcadores // a API através da sua função fitBounds vai redefinir o nível do zoom // e consequentemente a área do mapa abrangida. map.fitBounds(bounds); } // Função que cria os marcadores e define o conteúdo de cada Info Window. function createMarker(latlng, nome, morada1, morada2, codPostal){ var marker = new google.maps.Marker({ map: map, position: latlng, title: nome }); // Evento que dá instrução à API para estar alerta ao click no marcador. // Define o conteúdo e abre a Info Window. google.maps.event.addListener(marker, 'click', function() { // Variável que define a estrutura do HTML a inserir na Info Window. var iwContent = '<div id="iw_container">' + '<div class="iw_title">' + nome + '</div>' + '<div class="iw_content">' + morada1 + '<br />' + morada2 + '<br />' + codPostal + '</div></div>'; // O conteúdo da variável iwContent é inserido na Info Window. infoWindow.setContent(iwContent); // A Info Window é aberta. infoWindow.open(map, marker); }); }  
       
       
    • Por Annie Rizzini
      Olá pessoal!
       
      Estou iniciando com JSON, e tenho uma lista forma da seguinte forma:
      "sentence_id": 1,
      "text": "I hate #ThisPhoneCompany products, you'd have to torture me to get me to use #ThisPhone.",
      "tones": [
      { "score": 0.591225, "tone_id": "anger", "tone_name": "Anger" },
      { "score": 0.560098, "tone_id": "analytical", "tone_name": "Analytical" },
      { "score": 0.645985, "tone_id": "confident", "tone_name": "Confident" }
      ] },
      { "sentence_id": 2,
      "text": "The emojis in #ThisPhone are stupid.",
      "tones": [
      { "score": 0.760538, "tone_id": "anger", "tone_name": "Anger" }
      ] },
       
      Meu código para percorrer a lista é:
      $jsonObj = json_decode($result, true); foreach($jsonObj["sentences_tone"] as $value){ for($i = 0; $i < count($value['tones'][$i]['score']); $i++){ print_r ($value); echo '<br/><br/>valor: '.$value['tones'][$i]['score'][$i]; echo '<br/>sentimento: '.$value['tones'][$i]['tone_name'].'<br/>'; }; echo '<br/>texto: '.$value['text']; };  
      O problema é que sempre que há mais de um "tones" (como o "sentence_id": 1, onde há 3 "tones"), aparece o erro Notice: Undefined offset: 1 in /Applications/XAMPP/xamppfiles/htdocs/toneAnalyzer/test.php on line 28, já o "sentence_id": 2, onde há 1 só, imprime correto, sem dar erro... Alguma luz?
       
       
       

    • Por Junior Fel
      Olá, gostaria de saber como eu faço um botão que redireciona tudo o que foi escrito para uma caixa de respostas
      EX: Veja a foto
      Se a pessoa digitar "11284910479", a página mostrará os dados
      Alguem pode me passar o código??
      Ps: já tenho a Api
×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.