Inconsistências na ordem da chave JSON ao usar "json.dumps"
Em Python, a conversão JSON geralmente envolve a utilização de "json.dumps" para transformar dicionários em objetos JSON. No entanto, os usuários podem encontrar inconsistências na ordem da chave JSON resultante, com a sequência esperada (id, nome, fuso horário) diferente da saída real (fuso horário, id, nome).
Para resolver esse problema e aplicar o ordem de teclas desejada, duas abordagens estão disponíveis:
1. Utilizando o parâmetro "sort_keys":
O parâmetro "sort_keys", quando definido como True, classifica as chaves JSON em ordem alfabética. Por exemplo, o seguinte snippet de código geraria a ordem de chave desejada:
import json
countries = []
countries.append({"id": 1, "name": "Mauritius", "timezone": 4})
countries.append({"id": 2, "name": "France", "timezone": 2})
countries.append({"id": 3, "name": "England", "timezone": 1})
countries.append({"id": 4, "name": "USA", "timezone": -4})
json_data = json.dumps(countries, sort_keys=True)
print(json_data)
2. Empregando OrderedDict:
"collections.OrderedDict" do Python retém o pedido de inserção da chave. Ao utilizar OrderedDict, a ordem de chave esperada pode ser alcançada:
from collections import OrderedDict
countries = OrderedDict()
countries["id"] = 1
countries["name"] = "Mauritius"
countries["timezone"] = 4
json_data = json.dumps(countries)
print(json_data)
No Python 3.6 e superior, a ordem dos argumentos de palavras-chave é preservada por padrão, permitindo uma sintaxe mais concisa:
json_data = json.dumps(OrderedDict(id=1, name="Mauritius", timezone=4))
print(json_data)
Por último, para entrada JSON, o parâmetro "object_pair_hook" pode ser utilizado para preservar a ordem do objeto e gerar um OrderedDict:
import json
json_data = json.loads('{"id": 1, "name": "Mauritius", "timezone": 4}', object_pairs_hook=OrderedDict)
print(json_data)
Isenção de responsabilidade: Todos os recursos fornecidos são parcialmente provenientes da Internet. Se houver qualquer violação de seus direitos autorais ou outros direitos e interesses, explique os motivos detalhados e forneça prova de direitos autorais ou direitos e interesses e envie-a para o e-mail: [email protected]. Nós cuidaremos disso para você o mais rápido possível.
Copyright© 2022 湘ICP备2022001581号-3