Converter XML em JSON em Python

Muhammad Waiz Khan 30 março 2021
Converter XML em JSON em Python

Neste tutorial, veremos o método para converter XML em JSON em Python. O formato JSON é mais simples de ler e gravar do que o formato XML; seu estilo compacto e leve também melhora o desempenho do sistema, especialmente em APIs RESTful. Como JSON é melhor que XML em muitos aspectos, ele é usado como um substituto para XML em muitos campos.

Agora, suponha que temos dados salvos no formato XML e queremos convertê-los para o formato JSON; podemos converter os dados XML em JSON em Python usando o método a seguir.

Converter XML em JSON em Python usando o módulo xmltodict

Em Python, temos o método json.dumps(obj) que pega os dados como argumento obj e os serializa como o fluxo formatado em JSON e retorna os dados formatados como saída.

O argumento obj pode ser um dicionário, string, lista ou tupla, etc, o método json.dumps() converte o obj de acordo com seu tipo de dados. Como se precisássemos de um objeto JSON, teremos que fornecer a entrada como um dicionário, já que o método json.dumps() converte o dicionário para o objeto JSON. O tipo de lista ou tupla é convertido em array JSON e o tipo de string em string JSON.

Podemos usar o método xmltodict.parse() para converter os dados XML para o tipo de dados do dicionário Python. O método xmltodict.parse() usa dados de formato XML como uma string, analisa os dados e retorna a saída como um dicionário.

Depois de converter os dados em um dicionário usando o método xmltodict.parse(), podemos usar o método json.dumps() para converter os dados para o objeto JSON.

O código de exemplo a seguir demonstra como converter os dados XML em JSON usando os métodos json.dumps() e xmltodict.parse() em Python.

import xmltodict
import json

dictionary = xmltodict.parse(
    """<note>
  <date>2021-03-07</date>
  <time>15:23</time>
  <to>Sara</to>
  <from>Khan</from>
  <msg>Let's meet this weekend!</msg>
</note>"""
)
json_object = json.dumps(dictionary)
print(json_object)

Resultado:

{"note": {"date": "2021-03-07", "time": "15:23", "to": "Sara", "from": "Khan", "msg": "Let's meet this weekend!"}}

Artigo relacionado - Python XML

Artigo relacionado - Python JSON