I'm having a problem while reading a JSON and convert to an Object and display the data on the screen using C # , I'm using the Newtonsoft and would like to know how to check if the data type is an array and check if it is empty?
Here is an example of a 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 think I could do more, I'm not sure if it's the correct way 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; }
}
}