Serealize a JSON String C #

0

I want to set up a JSON String, but I can not create the class the way I need it, I can get information up to the first level, but I can not create subkeys.

For example I want the string to be

{
  "nome": "Nome",   
  "familia": {
    "pai": "Nome do PAI",
    "mae": "Nome da MÃE"
   },
  "contato": {
    "celular": "Numero do celular",
    "casa": "Numero da casa"
   }
}

My attempt:

public class Pessoa
    {
        public string nome { get; set; }

        class Familia
        {
            public string pai { get; set; }
            public string mae { get; set; }
        }

        class Contato
        {
            public string celular { get; set; }
            public string casa { get; set; }
        }
        //Essa classe está correta ?
    }

private void btnSerealiza_Click(object sender, EventArgs e)
    {
        Pessoa p = new Pessoa
        {

            nome = "Nome",
            //Como ficaria aqui ?
        };

        tbRetorno.Text = JsonConvert.SerializeObject(p, Formatting.Indented);
    }

I'm new to this so any help or criticism will be welcome.

    
asked by anonymous 13.03.2018 / 12:49

1 answer

3

You need to create separate classes, and within the Pessoa class you will have an object of class Familia :

public class Pessoa
{
    public string nome { get; set; }
    public Familia familia {get;set;}
    public Contato contato {get;set;}

}

public class Familia
{
    public string pai { get; set; }
    public string mae { get; set; }
}

public class Contato
{
    public string celular { get; set; }
    public string casa { get; set; }
}
  

When there are objects within others, we call aggregation or composition.

  

Using:

private void btnSerealiza_Click(object sender, EventArgs e)
{
    Pessoa p = new Pessoa
    {
        nome = "Nome",
        familia = new Familia()
        {
            pai = "nome do pai",
            mae = "nome da mae"
        },
        contato = new Contato()
        {
            celular = "123132123",
            casa = "156448"
        }
    };

    tbRetorno.Text = JsonConvert.SerializeObject(p, Formatting.Indented);
}

Recommended reading:

link

link

    
13.03.2018 / 13:00