Consume Json and direct to a database using C #

2

I'm having a hard time consuming a payback and convert- I've tried it in object so I can write to the database, my variables always return "null", I've tried several ways and I always get stuck in this return. Here's part of the code:

1) Json Content:

{  
  "list":[  
    {  
      "Pedido":"1234",
      "Data":"2018-05-21",
      "Cliente":"Jose Teste",
      "Itens":[  
        {  
          "Codigo":"1",
          "Quantidade":1,
          "ItemNome":"Tomada trifasica Elgin",
          "Preco":25.50
        }
      ],
      "Total":25.50,
      "FormaDePagamento":"cheque",
    }
  ]
}

2) Model class in C #:

namespace ApiTeste.Models
{
    public class Pedidos
    {
        public Pedido[] list { get; set; }
        //public List<Pedido> pedido { get; set; }
    }

    public class Pedido
    {
        public string NumPedido { get; set; }
        public string Data { get; set; }
        public string Cliente { get; set; }
        public Iten[] Itens { get; set; }
        public float Total { get; set; }
        public string FormaDePagamento { get; set; }
    }

    public class Iten
    {
        public string Codigo { get; set; }
        public int Quantidade { get; set; }
        public string ItemNome { get; set; }
        public float Preco { get; set; }
    }
}

3) Part of the method that returns Json to direct to the object:

using (HttpWebResponse retornoServJson = (HttpWebResponse)requisicaoWeb.GetResponse())
{
    using (Stream retornoServJson = retornoJson.GetResponseStream())
    {                   
        using (StreamReader retornoReaderJson = new StreamReader(retornoServJson))
        {
            var response = retornoReader.ReadToEnd();
            Pedido pedido = new JavaScriptSerializer().Deserialize<Pedido>(response);  //aqui o objeto retorna null
            string teste = pedido.NumPedido; //aqui o objeto retorna null
            string teste2 = pedido.Data; //aqui o objeto retorna null
        }
    }
}
asked by anonymous 30.05.2018 / 21:28

2 answers

1

The Order Class o Attribute NumPedido must be Pedido .

namespace ApiTeste.Models
{
public class Pedidos
{
    public Pedido[] list { get; set; }
    //public List<Pedido> pedido { get; set; }
}

public class Pedido
{
    public string NumPedido { get; set; }
    public string Data { get; set; }
    public string Cliente { get; set; }
    public Iten[] Itens { get; set; }
    public float Total { get; set; }
    public string FormaDePagamento { get; set; }
}

public class Iten
{
    public string Codigo { get; set; }
    public int Quantidade { get; set; }
    public string ItemNome { get; set; }
    public float Preco { get; set; }
}
}

About converting Json to the Orders object.

I would use Newtonsoft

using (HttpWebResponse retornoServJson = (HttpWebResponse)requisicaoWeb.GetResponse())
{
    using (Stream retornoServJson = retornoJson.GetResponseStream())
    {                   
        using (StreamReader retornoReaderJson = new StreamReader(retornoServJson))
        {
            var response = retornoReader.ReadToEnd();
            Pedido pedido = JsonConvert.DeserializeObject<Pedido>(response);
            string teste = pedido.NumPedido; //aqui o objeto retorna null
            string teste2 = pedido.Data; //aqui o objeto retorna null
        }
    }
}

The response should be String.

    
31.05.2018 / 16:01
0

I spent a few days testing various solutions and got this solution, so I share:

using (StreamReader retornoReaderJson = new StreamReader(retornoServJson))
{
    Global.retorno = (retornoReaderJson.ReadToEnd());

    string JSON = @Global.retorno;
    JObject pedido = JObject.Parse(JSON);

    IList<JToken> equipamentos = pedido["list"].Children().ToList();
    foreach (JToken equip in equipamentos)
    {
        IList<JToken> comandos = equip.Children().ToList();
        foreach (JToken cmd in comandos)
        {
            //Fica em looping passando dadopor dado
            dadoDaPedido = (cmd.ToString());
        }
    }
}
    
03.06.2018 / 01:12