How to convert a json return to a C# object display the result on the screen

Asked

Viewed 414 times

0

I’m having a little trouble reading a JSON and convert to an Object and display the data on the screen using C#, I’m using the lib Newtonsoft and would like to know how to check if the data type is an array and check if it is empty?

Follow an example of return below:

  [
        {
          "id": 1,
          "nome": "sample string 2",
          "descricao": "sample string 3",
          "disponivel": true,
          "preco": 5.1,
          "foto": "QEA=",
          "opcoesExtras": [
            {
              "id": 1,
              "nome": "sample string 3",
              "calculoTipo": 0,
              "maximoExtras": 4,
              "itens": [
                {
                  "id": 1,
                  "nome": "sample string 3",
                  "valor": 4
                },
                {
                  "id": 1,
                  "nome": "sample string 3",
                  "valor": 4
                }
              ]
            },
            {
              "id": 1,
              "nome": "sample string 3",
              "calculoTipo": 0,
              "maximoExtras": 4,
              "itens": [
                {
                  "id": 1,
                  "nome": "sample string 3",
                  "valor": 4
                },
                {
                  "id": 1,
                  "nome": "sample string 3",
                  "valor": 4
                }
              ]
            }
          ],
          "categoriaId": 6,
          "categoria": {
            "id": 1,
            "nome": "sample string 2",
            "produtos": []
          }
        },
        {
          "id": 1,
          "nome": "sample string 2",
          "descricao": "sample string 3",
          "disponivel": true,
          "preco": 5.1,
          "foto": "QEA=",
          "opcoesExtras": [
            {
              "id": 1,
              "nome": "sample string 3",
              "calculoTipo": 0,
              "maximoExtras": 4,
              "itens": [
                {
                  "id": 1,
                  "nome": "sample string 3",
                  "valor": 4
                },
                {
                  "id": 1,
                  "nome": "sample string 3",
                  "valor": 4
                }
              ]
            },
            {
              "id": 1,
              "nome": "sample string 3",
              "calculoTipo": 0,
              "maximoExtras": 4,
              "itens": [
                {
                  "id": 1,
                  "nome": "sample string 3",
                  "valor": 4
                },
                {
                  "id": 1,
                  "nome": "sample string 3",
                  "valor": 4
                }
              ]
            }
          ],
          "categoriaId": 6,
          "categoria": {
            "id": 1,
            "nome": "sample string 2",
            "produtos": []
          }
        }
      ]

I believe I’ve managed to do more I’m not sure if it’s the right way to go below:

 using System;
    using System.Collections.Generic;
    using Newtonsoft.Json;

    namespace ParseApp
    {
        class MainClass
        {
            public static void Main(string[] args)
            {
                string json = @"[{'descricao': 'sample string 3', 'categoriaId': 6, 'foto': 'QEA=', 'preco': 5.1, 'id': 1, 'opcoesExtras': [{'id': 1, 'itens': [{'id': 1, 'valor': 4, 'nome': 'sample string 3'}, {'id': 1, 'valor': 4, 'nome': 'sample string 3'}], 'calculoTipo': 0, 'maximoExtras': 4, 'nome': 'sample string 3'}, {'id': 1, 'itens': [{'id': 1, 'valor': 4, 'nome': 'sample string 3'}, {'id': 1, 'valor': 4, 'nome': 'sample string 3'}], 'calculoTipo': 0, 'maximoExtras': 4, 'nome': 'sample string 3'}], 'nome': 'sample string 2', 'categoria': {'id': 1, 'produtos': [], 'nome': 'sample string 2'}, 'disponivel': true}, {'descricao': 'sample string 3', 'categoriaId': 6, 'foto': 'QEA=', 'preco': 5.1, 'id': 1, 'opcoesExtras': [{'id': 1, 'itens': [{'id': 1, 'valor': 4, 'nome': 'sample string 3'}, {'id': 1, 'valor': 4, 'nome': 'sample string 3'}], 'calculoTipo': 0, 'maximoExtras': 4, 'nome': 'sample string 3'}, {'id': 1, 'itens': [{'id': 1, 'valor': 4, 'nome': 'sample string 3'}, {'id': 1, 'valor': 4, 'nome': 'sample string 3'}], 'calculoTipo': 0, 'maximoExtras': 4, 'nome': 'sample string 3'}], 'nome': 'sample string 2', 'categoria': {'id': 1, 'produtos': [], 'nome': 'sample string 2'}, 'disponivel': true}]";


                List<Example> ex = JsonConvert.DeserializeObject<List<Example>>(json);

                foreach (Example item in ex){
                    Console.WriteLine("Produto id: {0}", item.id);
                    Console.WriteLine("Produto nome: {0}",item.nome);
                    Console.WriteLine("Produto descrição: {0}",item.descricao);
                    Console.WriteLine("Produto Preço: {0}",item.preco);
                    Console.WriteLine("Produto Foto: {0}",item.foto);
                    //Ler Opções extras
                    if (item.opcoesExtras.Count > 0)
                    {
                        foreach (OpcoesExtra o in item.opcoesExtras)
                        {
                            Console.WriteLine(" - OpcoesExtra id: {0}", o.id);
                            Console.WriteLine(" - OpcoesExtra nome: {0}", o.nome);
                            Console.WriteLine(" - OpcoesExtra Maximo Extras: {0}", o.maximoExtras);
                            if (o.itens.Count > 0)
                            {
                                foreach (Iten i in o.itens)
                                {
                                    Console.WriteLine(" - - item id: {0}", i.id);
                                    Console.WriteLine(" - - item Valor: {0}", i.valor);
                                    Console.WriteLine(" - - item nome: {0}", i.nome);
                                }
                            }

                        }
                    }

                    Console.WriteLine("-----------------------------------------------------------------------------");
                }         
            }
        }
        //Classes aqui 
        public class Iten
        {
            public int id { get; set; }
            public string nome { get; set; }
            public int valor { get; set; }
        }

        public class OpcoesExtra
        {
            public int id { get; set; }
            public string nome { get; set; }
            public int calculoTipo { get; set; }
            public int maximoExtras { get; set; }
            public IList<Iten> itens { get; set; }
        }

        public class Categoria
        {
            public int id { get; set; }
            public string nome { get; set; }
            public IList<object> produtos { get; set; }
        }

        public class Example
        {
            public int id { get; set; }
            public string nome { get; set; }
            public string descricao { get; set; }
            public bool disponivel { get; set; }
            public double preco { get; set; }
            public string foto { get; set; }
            public IList<OpcoesExtra> opcoesExtras { get; set; }
            public int categoriaId { get; set; }
            public Categoria categoria { get; set; }
        }
    }
  • What are the arrays you want to check if they are empty?

  • @Leandroangelo Hello Leandro so I need to check the array of optionsExtras by or not exist, items also may or may not exist I found some basic examples more does not suit me as the example marked as duplicated above.

  • include in your question the implementation that most approached the expected result.

  • @Leandroangelo I don’t have an implementation yet, but I am with this doubt of how to make the return Perse, a simple examples printing on the console would already help.

No answers

Browser other questions tagged

You are not signed in. Login or sign up in order to post.