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
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 hucsantos
      Pessoal, Boa Tarde !!!
       
      Gostaria de uma ajuda para uma solução que estou criando de forma bem amadora, pois não sou programador de profissão.
       
      Estou utilizando o MS Visual Studio para criar formulários em páginas Asp.Net com a linguagem VB.Net por estar mais familiazarizado com VBA do Excel.
      Já consegui fazer algumas coisas com por exemplo construir a página e os controles de validação de campos, porém preciso fazer a conexão e regras de consulta com banco de dados.
      Acontece que, a base de dados do sistema utilizado esta em Access, por uma série de limitações de um outro sistema que utiliza este banco.
      Como não sou Expert em programação, os melhores exemplos dessa ligação estão em linguagem PHP, ou conexões com outros bancos de dados.
       
      O que eu gostaria de fazer, e se possível pudesse analisar algum projeto disponível na seguinte condição;
       
      Uma solução para me conectar com o banco de dados Access via JSON e trazer estes dados para poder trabalhar com Angular ou até com as opções de controles ASp.net.
       
      Eu não estou conseguindo identificar como eu passo os dados coletados na consulta JSON para uma tabela html ou aplicar filtros na consulta, pois os melhores exemplos de gráficos, utilização de filtros, etc, são utilizando tags html e Angular.
       
      Segue anexo uma imagem de exemplo do que eu imagino.
       
      Desde já agradeço a atenção e desculpe qualquer coisa sem sentido nessa história.....rsrs
       
      Hugo Santos
       

    • Por Luiz Carlos Ferreira
      Estou tentando imprimir apenas os campos deste .json  "sku" , "name" , "images" para consumir com boostrap, alguém pode me ajudar, já tentei de toda forma e não consegui.
      Sei que "_embedded" é do tipo {}object, "product" do tipo {}Array, o resto não sei.
      Colocando no https://jsoneditoronline.org/ mostra como ele esta construído, mas ainda não aprendi a ler JSON.
       
      { "_links": { "self": { "href": "https://app.squidfacil.com.br/api/products?page=1" }, "first": { "href": "https://app.squidfacil.com.br/api/products" }, "last": { "href": "https://app.squidfacil.com.br/api/products?page=132" }, "next": { "href": "https://app.squidfacil.com.br/api/products?page=2" } }, "_embedded": { "product": [ { "sku": "SQUID5991", "name": "Pipoqueira Pop Time Branca Britânia", "slug": "pipoqueira-pop-time-branca-britania", "categories": [ { "id": "58ab9e17384c8a7f5784d104", "name": "Eletro Portateis", "slug": "Eletro Portateis" } ], "brand": "Britânia", "warranty": 360, "available": true, "immediateShipment": true, "stockQuantity": 6, "deadline": 1, "gtin": "7891356002656", "ncm": "85167990", "images": [], "mainImage": { "filename": "https://d27evgefuqvq7p.cloudfront.net/uploads/original/pipoqueira-pop-time-branca-britania3.png" }, "attachments": [], "description": "Pipoqueira Pop Time B-02 - Branca - 127volts", "shortDescription": "Pipoqueira Pop Time Branca Britânia ", "technicalDescription": "<ul><li>127volts</li><li>Não utiliza óleo nem gordura</li><li>Bocal direcionador de pipoca: Garante que a pipoca saia quente direto para uma tigela.</li><li>Porta-fio</li><li>Botão liga/desliga</li><li>Com tampa dosadora</li><li>Tampa dosadora também permite derreter a manteiga e acrescentar depois do preparo</li><li>Base antiderrapante</li></ul>", "includedItems": "1 - Pipoqueira", "measurements": { "weight": 1055, "height": 27, "length": 23, "width": 16 }, "suggestedRetailPrice": { "amount": 12990, "currency": "BRL" }, "squidPrice": { "amount": 7818, "currency": "BRL" }, "profitMargin": { "amount": 5172, "currency": "BRL" }, "_embedded": { "category": { "id": "58ab9e17384c8a7f5784d104", "name": "Eletro Portateis", "slug": "Eletro Portateis", "parents": [ { "id": "56bb5f99263a7b466d00f432", "name": "Casa e Decoração", "slug": "casa-decoracao" } ], "children": [ { "id": "58ab9e42384c8a765784d105", "name": "Aspiradores", "slug": "aspiradores" }, { "id": "58aba1cf384c8a785884d104", "name": "Grill", "slug": "grill" }, { "id": "58aba522384c8ae35984d104", "name": "Espremedores", "slug": "espremedores" }, { "id": "58ac2f50384c8a726b41fd2f", "name": "AirFryer", "slug": "airfryer" }, { "id": "58ac3663384c8a0b6e41fd2d", "name": "Batedeiras", "slug": "batedeiras" }, { "id": "58ac3887384c8a9d6e41fd2e", "name": "Mixer", "slug": "mixer" }, { "id": "58ac3a89384c8a7a6f41fd2d", "name": "Liquidificador", "slug": "liquidificador" }, { "id": "58ac78e1384c8aa27f41fd2e", "name": "Churrasqueiras Elétricas", "slug": "churrasqueiras-eletricas" }, { "id": "58ac7d5b384c8a068141fd57", "name": "Máquinas de Café", "slug": "maquinas-de-cafe" }, { "id": "58ac7eb6384c8a678141fd2d", "name": "Cafeteira", "slug": "cafeteira" }, { "id": "58aca199384c8aad8c41fd2d", "name": "Panelas Elétricas", "slug": "panelas-eletricas" }, { "id": "58aca672384c8a8c8d41fd31", "name": "Ventiladores", "slug": "ventiladores" }, { "id": "58adbbfd384c8aeafddd5f9e", "name": "Panelas de Pressão", "slug": "panelas-de-pressao" }, { "id": "58adc1eb384c8a98ffdd5f9e", "name": "Ferros de Passar", "slug": "ferro-de-passar" }, { "id": "58ade723384c8aae0bdd5f9e", "name": "Furadeiras", "slug": "furadeiras" }, { "id": "58adebc3384c8ae70cdd5f9e", "name": "Micro Retificadoras", "slug": "micro-retificadoras" }, { "id": "58c93705384c8a942edd6f81", "name": "Aquecedores e Desumificadores", "slug": "aquecedores-e-desumificadores" }, { "id": "58ca91b2384c8ae419d203ac", "name": "Aspiradores de Pó", "slug": "aspiradores-de-po" }, { "id": "58d11d0e384c8a023e83a76b", "name": "Bebedouros", "slug": "bebedouros" }, { "id": "58d13194384c8a1f4483a767", "name": "Aspiradores de Pelos", "slug": "aspiradores-de-pelos" }, { "id": "58d13388384c8a9a4483a767", "name": "Balanças", "slug": "balanças" }, { "id": "58d90453384c8adba758965e", "name": "Serras", "slug": "serras" }, { "id": "58dcf9a5384c8af3f2186e48", "name": "Maquinas de Cupcakes", "slug": "maquinas-de-cupcakes" }, { "id": "58dcfee1384c8ad7f4186e4c", "name": "Climatizadores", "slug": "climatizadores" }, { "id": "58dd097a384c8ad5f7186e48", "name": "Caixas de Som", "slug": "caixa-de-som" }, { "id": "58dd0b7e384c8a8ff8186e48", "name": "Crepeiras", "slug": "crepeiras" }, { "id": "58de4ebc384c8abb3adb694d", "name": "Cortadores de Cabelo", "slug": "cortador-de-cabelo" }, { "id": "59316aab384c8a0f48ae75d9", "name": "Umidificadores", "slug": "umidificadores" }, { "id": "595ba3bf384c8adf1bb6d754", "name": "DVD", "slug": "dvd" }, { "id": "595bd79f384c8a8836b6d754", "name": "Plainas", "slug": "plainas" }, { "id": "595bd9c4384c8acb59b6d756", "name": "Lixadeiras", "slug": "lixadeiras" }, { "id": "595bdbff384c8a3171b6d757", "name": "Esmerilhadeira", "slug": "esmerilhadeira" }, { "id": "596ca9a1384c8a1c2f4c3c0f", "name": "Circuladores de ar", "slug": "circuladores-de-ar" }, { "id": "596cb216384c8a67cd4c3c0c", "name": "Depiladores Elétricos", "slug": "depiladores-eletricos" }, { "id": "5981e3c6384c8a3c557b23c6", "name": "Conjuntos", "slug": "conjuntoss" }, { "id": "59bfc2b0384c8a2212b63d52", "name": "Sanduicheiras", "slug": "sanduicheiras" }, { "id": "59f1bbe0384c8a3c4d5d0dab", "name": "Multiprocessadores", "slug": "multiprocessadores" }, { "id": "59f1c38f384c8a035c5d0dab", "name": "Fornos Elétricos", "slug": "fornos-eletricos" }, { "id": "59f1cc0d384c8a676e5d0dab", "name": "Passadeiras", "slug": "Passadeiras" } ], "_links": { "self": { "href": "https://app.squidfacil.com.br/api/categories/58ab9e17384c8a7f5784d104" } } } }, "_links": { "self": { "href": "https://app.squidfacil.com.br/api/products/SQUID5991" } } } ] }, "page_count": 132, "page_size": 30, "total_items": 3944, "page": 1 }  
    • Por Luiz Carlos Ferreira
      Como faço para dar echo apenas em produtos deste PHP.
      Os tokens são provisorios.
       
      <?php
      $curl = curl_init();
      curl_setopt_array($curl, array(
        CURLOPT_URL => "https://app.squidfacil.com.br/api/products?page=1",
        CURLOPT_RETURNTRANSFER => true,
        CURLOPT_ENCODING => "",
        CURLOPT_MAXREDIRS => 10,
        CURLOPT_TIMEOUT => 30,
        CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
        CURLOPT_CUSTOMREQUEST => "GET",
        CURLOPT_HTTPHEADER => array(
          "Authorization: Bearer cf674082c2ad47915d15d86373f1258a521e5fc1",
          "Cache-Control: no-cache",
          "Postman-Token: c4ede18c-737a-41cb-5f40-b69d66a429a8"
        ),
      ));
      $response = curl_exec($curl);
      $err = curl_error($curl);
      curl_close($curl);
      if ($err) {
        echo "cURL Error #:" . $err;
      } else {
          
      echo $response;
          
          
      }
    • Por Luiz Carlos Ferreira
      Como faço para dar ECHO apenas em SKU e NAME?

    • Por TIAGO-NET
      Estou acompanhando alguns tutoriais no YouTube e me deparei com o seguinte código:
      Manifest
      { "name": "Desenvolve.NET", "manifest_version": 2, "description": "Aplicação de teste.", "version": "1.0", "permissions": [ "unlimited_storage", "notifications", "contextMenus", "cookies", "storage", "idle", "tabs", "activeTab" ], "browser_action":{ "default_popup":"popup.html" }, "content_scripts": [ { "matches": ["http://www.google.com/*"], "js":["js/jquery-3.2.1.min.js","js/chrome.js"], "run_at": "document_idle", "persistent": false } ] } Js
      $('input[name="bntK"').before('input id="bntD" value="Google.NET" arial-label="Google.NET" name="bntX" type="submit" jsaction="sf.chk">'); Deveria ser inserido um botão na pagina do Google, porém nada ocorre. Já tentei utilizar um alert para verificar se o script estava sendo executado, mas sem sucesso. Todos os arquivos estão dentro da pasta js. O arquivo html é executado normalmente, o erro se mantém no JS
×

Informação importante

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

Este projeto é mantido e patrocinado pelas empresas:
Hospedado por: