"Se um trabalhador quiser fazer bem o seu trabalho, ele deve primeiro afiar suas ferramentas." - Confúcio, "Os Analectos de Confúcio. Lu Linggong"
Primeira página > Programação > Como controlar a ordem das chaves JSON com `json.dumps` do Python?

Como controlar a ordem das chaves JSON com `json.dumps` do Python?

Publicado em 2024-11-08
Navegar:732

 How to Control JSON Key Order with Python\'s `json.dumps`?

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)
Tutorial mais recente Mais>

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