No internet connection
  1. Home
  2. Dúvidas Gerais

Uma outra forma de ler e gravar Json

Por Gabriel de Araújo Santos @gabrielSantos
    2023-01-04 21:04:18.432Z

    Boa tarde pessoal,
    Eu vi que já escreveram aqui no fórum sobre como ler e gravar arquivos Json, mas eu gostaria de compartilhar com vcs uma outra forma que eu descobri de fazer isso sem utilizar o StremReader, achei bem pratico.

    Vou utilizar o meu projeto bytebank como exemplo para explicar.

    Primeiramente eu crio o nome do arquivo onde vou salvar os dados dos meus usuários ( isso na Main)

    using System.Text.Json;
    
    string fileName = "Usuarios.json";
    

    Para criar um arquivo Json posso fazer o seguinte:

    Neste código eu estou passando por parâmetro a minha lista de usuários, que neste caso é uma lista de objetos do tipo Usuario, e o nome do arquivo que vou criar.

    Eu então adiciono à lista o novo usuário que criei, e transformo essa lista para a notação Json.

    Json significa "JavaScript object notation", que é uma forma muito comum de salvar dados. a string que acabei de criar fica como:

    [{"Cpf":"066","Titular":"Gabriel","Senha":"123"}]

    O que eu então salvo em um arquivo. Sendo neste momento uma lista com apenas um objeto.

    Para ler um arquivo Json e utilizar no nosso código vamos precisar desserializar o arquivo, que é por exemplo o que eu faço toda vez que inicio o programa:

    Neste caso ao inciar o programa eu vou ler eu o arquivo Json que já foi criado antes e se ele não estiver vazio eu desserializo o arquivo.

    Neste caso como eu tinha transformado uma lista de objetos para json anteriormente é exatamente isso que vou esperar de volta quando eu desserializar o arquivo.

    Então eu adiciono cada elemento dessa lista para a minha lista que utilizo no meu programa.

    Espero que seja de proveito para vcs e não tenha ficado confuso.

    • 11 respostas
    1. André Filipe @andresantos
        2023-01-05 02:25:03.334Z

        Bem detalhada a sua publicação. Um teste rápido antes de adicionar ao código é bom.

        1. Em resposta agabrielSantos:
          Marco Sousa @marcosousa
            2023-01-05 19:58:29.311Z

            Boa, mostrou de um jeito simples e eficaz. Desse jeito vai ajudar muito. Mandou bem!!

            1. Em resposta agabrielSantos:
              Lettycia Cristina @lettyciacristina
                2023-01-13 22:43:11.876Z

                Nossa, muito bom... era o que estava precisando, vou tentar implementar no meu ByteBank. Obrigada!

                1. De nada!

                2. T
                  Em resposta agabrielSantos:
                  Thiago Nebuloni @thiagonebuloni
                    2023-01-15 01:17:39.049Z

                    Muito bom Gabriel! Eu estava tendo algumas dificuldades pra fazer a persistência em Json, agora consegui implementar no meu Jogo da Velha. Valeu!

                  • V
                    Em resposta agabrielSantos:

                    parabens! muito bom! me ajudou muito!!!

                    1. A
                      Em resposta agabrielSantos:
                      Alana @alanaperes
                        2023-01-25 13:53:25.506Z

                        Me ajudou muito Gabriel, consegui entender bem como funciona a persistência e aplicar. Obrigada.

                        1. Em resposta agabrielSantos:
                          Mauricio Santana @mauriciosm
                            2023-01-28 23:15:24.531Z

                            Isso me ajudou uns dias atrás, mas esqueci de comentar aqui por conta da correria. E para atualizar uma informação, como vc está fazendo?

                            1. Então, eu encontro o jogador que desejo atualizar na minha lista de jogadores e se eu quiser atualizar o usuario por exemplo, faço: jogador.Usuario=novoUsuario.

                              Ai para o Json é bem simples, tudo que preciso fazer é serializar a nova lista

                              1. Mauricio Santana @mauriciosm
                                  2023-01-30 10:58:02.660Z

                                  Show, antes meu código estava bem maior, juntei com a forma que pensei antes e consegui reduzir meu código na metade ou pouco menos da metade. Valeuuuu Monitor Gabriel :)