Como salvar vários cadastros corretamente formatados em um arquivo JSON?

0
5
Asked By MellowPine42 On

Estou aprendendo Python e tenho um script que cadastra clientes em um arquivo JSON. Quando adiciono um novo cadastro, os dicionários acabam sendo gravados um depois do outro, com o fechamento de um objeto imediatamente seguido pela abertura do próximo, deixando o arquivo inválido. Quero manter todos os clientes no mesmo JSON, separados corretamente e com cada chave em sua própria linha. Qual é a forma adequada de estruturar e salvar esses dados?

3 Answers

Answered By CactoAzul31 On

Também vale confirmar como você está abrindo o arquivo. Usar modo `"a"` apenas acrescenta texto no final e pode gerar exatamente esse problema. Para um JSON comum, leia os dados, altere a lista e regrave usando modo `"w"`. O parâmetro `indent=4` cuida da formatação, mas a separação correta entre os cadastros vem de colocá-los dentro de uma lista.

Answered By ByteLago7 On

Use o módulo `json` e salve os cadastros dentro de uma lista. Na hora de gravar, passe `indent` para deixar o arquivo organizado: `with open("clientes.json", "w", encoding="utf-8") as arquivo:n json.dump(clientes, arquivo, ensure_ascii=False, indent=4)`. O resultado será um único array contendo vários objetos, em vez de vários dicionários colados diretamente.

Answered By NuvemClara8 On

O problema não é apenas a quebra de linha: dois objetos JSON não podem ficar concatenados como `}{`. O arquivo precisa ter uma estrutura válida, por exemplo: `[{"nome": "cliente 1"}, {"nome": "cliente 2"}]`. Ao cadastrar, leia a lista existente, use `append()` para adicionar o novo dicionário e depois grave a lista inteira novamente com `json.dump(..., indent=4)`. Se o arquivo ainda não existir ou estiver vazio, comece com `clientes = []`.

Related Questions

LEAVE A REPLY

Please enter your comment!
Please enter your name here

This site uses Akismet to reduce spam. Learn how your comment data is processed.