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
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.
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.
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
How To: Running Codex CLI on Windows with Azure OpenAI
Set Wordpress Featured Image Using Javascript
How To Fix PHP Random Being The Same
Why no WebP Support with Wordpress
Replace Wordpress Cron With Linux Cron
Customize Yoast Canonical URL Programmatically