Como analisar JSON em Python

JSON é um formato popular para troca de dados. O Python vem com um built-in JSON módulo para analisar e trabalhar com dados JSON. E este tutorial ensinará tudo sobre como trabalhar com JSON em Python.

Ao final deste tutorial, você terá aprendido:

  • o básico do JSON,
  • como analisar e criar strings JSON em Python e
  • como ler e gravar em arquivos JSON em Python.

Vamos começar!⏳

O que é JSON?

JSON apoia J ava S cripto O bject N otação, e é uma baseado em texto formato para troca de dados. Embora o JSON seja inicialmente inspirado por objetos JavaScript, quase todas as linguagens de programação suportam trabalhando com JSON.

Se você já trabalhou com APIs ou leu arquivos de configuração, provavelmente já se deparou com JSON.

Você envia e recebe dados em JSON ao consultar APIs. E o JSON também é amplamente utilizado na comunicação cliente-servidor em aplicativos de software. Além disso, você também pode usar JSON para armazenamento de dados de uso geral.

O formato do JSON é muito semelhante ao de um dicionário Python. Dicionários são poderosas estruturas de dados integradas em Python que armazenam dados em pares chave-valor.

Antes de prosseguirmos, alguns pontos merecem destaque:

  • Em Python, um objeto JSON é armazenado como um dicionário.
  • Uma matriz em JSON é armazenada como um Lista Python .
  • Em JSON, os valores booleanos são indicados como true e false. Em Python, eles são convertidos em booleanos True e False.

Para obter mais detalhes sobre os tipos de dados que são traduzidos de JSON para Python, leia os documentos aqui .

Enquanto o json módulo faz parte da biblioteca padrão do Python, você não precisa instalá-lo. Você pode importar para o diretório atual, assim:

  import json

Como carregar uma string JSON em Python

A sintaxe geral para carregar uma string JSON em Python é:

  <dict_obj> = json.loads(<json_str>)

Aqui,

  • <dict_obj> é o dicionário Python para o qual você gostaria de carregar a string JSON,
  • <json_str> é qualquer string JSON válida.

Isso carrega o <json_str> no dicionário Python <dict_obj>.

Vamos codificar um exemplo. Aqui json_str é uma string JSON.

  json_str = '''
{
    "books": (
        {
            "title": "The Wind in the Willows",
            "author": "Kenneth Grahame",
            "year": "1908"
        },
        {
            "title": "To the Lighthouse",
            "author": "Virginia Woolf",
            "year": "1927"
        }
    )
}
'''

E o trecho de código abaixo mostra como você pode carregar a string JSON json_str em um dicionário Python usando o loads() método. Você pode usar o integrado type() função para verificar se py_dict é um dicionário Python.

  py_dict = json.loads(json_str)

type(py_dict)

# Output: dict

print(py_dict)

# Output
{'books': ({'title': 'The Wind in the Willows', 
'author': 'Kenneth Grahame', 'year': '1908'}, 
{'title': 'To the Lighthouse', 'author': 'Virginia Woolf', 'year': '1927'})}

Conforme mostrado no código acima, todos os campos na string JSON são pares chave-valor em py_dict.

Como criar strings JSON em Python

Vamos supor que você tenha um dicionário Python. Então, como você cria uma string JSON a partir dela?

Você pode fazer isso usando o dumps() método com esta sintaxe:

  <json_str> = json.dumps(<dict_obj>)

Aqui,

  • <dict_obj> é o dicionário Python a partir do qual você gostaria de criar a string JSON,
  • <json_str> é a string JSON resultante.

Então o dumps() despejos de método <dict_obj> em uma string JSON <json_str>.

Para nosso dicionário Python existente py_dict. vamos adicionar uma nova chave "movies". Você pode fazer isso conforme mostrado no trecho de código a seguir:

  py_dict("movies") = ({"title":"The Imitation Game","year":"2014",
"lang":"en","watched":True})

Agora, vamos despejar o dicionário modificado em uma nova string JSON json_str2 usando o dumps() método.

  json_str2 = json.dumps(py_dict)

print(json_str2)

# Output
{"books": ({"title": "The Wind in the Willows", "author": "Kenneth Grahame", "year": "1908"}, 
{"title": "To the Lighthouse", "author": "Virginia Woolf", "year": "1927"}), 
"movies": ({"title": "The Imitation Game", "year": "2014", "lang": "en", "watched": true})}

Como você pode ver no exemplo acima, a string JSON de saída é difícil de ler sem a formatação adequada. Você pode usar o opcional parâmetro indent para adicionar recuo.

E você pode fazer isso definindo indent para um número inteiro como 2, conforme mostrado abaixo:

  json_str2 = json.dumps(py_dict, indent = 2)
print(json_str2)

# Output
{
  "books": (
    {
      "title": "The Wind in the Willows",
      "author": "Kenneth Grahame",
      "year": "1908"
    },
    {
      "title": "To the Lighthouse",
      "author": "Virginia Woolf",
      "year": "1927"
    }
  ),
  "movies": (
    {
      "title": "The Imitation Game",
      "year": "2014",
      "lang": "en",
      "watched": true
    }
  )
}

Observe como a saída foi formatada com recuo e é fácil acompanhar.

Observação : Se você deseja que as teclas sejam classificadas em ordem alfabética, pode definir o sort_keys parâmetro para True.

Como você pode ver no trecho de código abaixo, as chaves agora foram classificadas em ordem alfabética.

  json_str2 = json.dumps(py_dict, indent = 2, sort_keys=True)
print(json_str2)

# Output
{
  "books": (
    {
      "author": "Kenneth Grahame",
      "title": "The Wind in the Willows",
      "year": "1908"
    },
    {
      "author": "Virginia Woolf",
      "title": "To the Lighthouse",
      "year": "1927"
    }
  ),
  "movies": (
    {
      "lang": "en",
      "title": "The Imitation Game",
      "watched": true,
      "year": "2014"
    }
  )

E as teclas agora aparecem em ordem alfabética: "author", "title" e "year".

Até agora, você aprendeu a trabalhar com strings JSON em Python. Na próxima seção, você aprenderá como trabalhar com arquivos JSON.

Como ler um arquivo JSON em Python

Ler um arquivo JSON em Python, use a seguinte sintaxe:

  json.load(<json-file>) 

# where <json-file> is any valid JSON file.

Observe como usamos o load() método e não o loads() método. loads() carrega um string JSON, enquanto load() carrega um arquivo JSON.

Você deve considerar o uso de gerenciadores de contexto ao trabalhar com arquivos em Python. Você também pode tentar ler os arquivos da seguinte maneira, sem usar o gerenciador de contexto:

  my_file = open('students.json','r')

contents = my_file.read()

print(contents)

file.close()

Se você não fechar o arquivo, pode haver um possível desperdício de recursos.

No entanto, ao trabalhar com gerenciadores de contextoos arquivos são fechados automaticamente assim que as operações de arquivo são concluídas.

E você pode usar o gerenciador de contexto para ler arquivos, conforme mostrado abaixo:

  with open('students.json','r') as file:   
   data = json.load(file) 
   print(data) 

# Output 

{'students': ({'roll_num': 'cs27', 'name': 'Anna', 'course': 'CS'}, 
{'roll_num': 'ep30', 'name': 'Kate', 'course': 'PHY'})}

Ao ler um arquivo, especifique o modo como ler -indicado por 'r' no código acima.

Observação : Para navegar facilmente pelo diretório atual, verifique se o arquivo JSON está na mesma pasta que main.py, conforme a imagem abaixo. Se o seu arquivo JSON estiver em uma pasta diferente, certifique-se de especificar o caminho para o arquivo.

read-json-file-in-pythonLeia o arquivo JSON em Python.

Na próxima seção, você aprenderá como gravar em um arquivo JSON.✍

Como gravar em um arquivo JSON em Python

Para gravar em um arquivo JSON existente ou para criar um novo arquivo JSON, use o dump() método como mostrado:

  json.dump(<dict_obj>,<json_file>)

# where <dict_obj> is a Python dictionary 

# and <json_file> is the JSON file 

Portanto, a sintaxe acima despeja o dicionário <dict_obj> no arquivo JSON <json_file>.

Na seção anterior, tivemos o dicionário py_dict. Agora vamos despejar isso em um novo arquivo JSON. E vamos nomeá-lo new_file.json.

E a célula de código a seguir mostra como você pode usar o dump() função:

  with open('new_file.json','w') as file:
  json.dump(py_dict,file)

Observação : Abrindo um arquivo no Escreva modo (w) substitui o conteúdo se o arquivo existir. Se o arquivo não existir, o arquivo será criado.

Depois de executar a célula de código acima, você verá que um novo arquivo JSON foi criado no diretório de trabalho atual. E você pode prosseguir e examinar o conteúdo do arquivo JSON.

criar-json-arquivo-pythonCriar arquivo JSON em Python

Ao gravar em arquivos, o objetivo principal é o armazenamento de dados. E se você quiser preservar a formatação, também pode usar o indent e sort_keys parâmetros.

Conclusão

⏲ ​​É hora de um rápido resumo.

Neste tutorial, você aprendeu:

  • o básico do uso de JSON,
  • como usar o loads() e load() métodos para ler string JSON e arquivos JSON, respectivamente,
  • como usar o dumps() e dump() métodos para despejar dicionários Python em strings JSON e arquivos JSON, respectivamente.

Espero que você tenha achado este tutorial útil. Feliz aprendizado!

Você também pode olhar para Ferramentas JSON para analisar, formatar e validar .

Artigos relacionados