C#- Convertendo JSON para DataTable
Hoje veremos como converter dados no formato JSON para um DataTable exibindo as informações em um GridView em uma aplicação Windows Forms. |
Neste artigo vamos consumir dados REST no formato JSON, e, como exemplo vou obter os dados do serviço https://jsonplaceholder.typicode.com/ que fornece algumas APIs para podermos consumir.
Atualmente temos 6 recursos disponíveis acessados via url :
/posts | 100 posts |
/comments | 500 comments |
/albums | 100 albums |
/photos | 5000 photos |
/todos | 200 todos |
/users | 10 users |
Vejamos então como consumir esses dados REST no formato JSON e convertê-los para um DataTable exibindo-os em um controle DataGridView no Windows Forms.
Recursos usados:
Criando o projeto Windows Forms
Crie um projeto Desktop do tipo Windows Forms (.NET Framework) com o nome WF_RestTable no VS 2017 Community.
No formulário padrão Form1.cs inclua os seguintes controles a partir da Toolbox:
Disponha os controles conforme o leiaute abaixo:
A seguir via menu Tools inclua uma referência no projeto ao pacote Newtonsoft.Json.
Agora no evento Click do botão de comando inclua o código abaixo no arquivo code-behind Default.aspx.cs
using Newtonsoft.Json;
using System;
using System.Data;
using System.IO;
using System.Net;
using System.Windows.Forms;
namespace WF_RestTable
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void btnAcessar_Click(object sender, EventArgs e)
{
string json = (new WebClient()).DownloadString(txtUrl.Text);
dgvDados.DataSource = JsonConvert.DeserializeObject<DataTable>(json);
}
}
}
|
Neste código estamos usando a classe WebClient e fazendo o download dos dados disponbilizado pela API definida pela Uri informada em txtUrl.
A seguir usando o método DeserializeObject<DataTable> convertemos os dados no formato json para um DataTable e exibimos no controle DataGridView.
Simples assim...
Executando o projeto e acessando as API no endereco https://jsonplaceholder.typicode.com/ iremos obter o resultado abaixo:
Tudo isso com duas linhas de código.
É claro que existem outras formas de obter o mesmo resultado. A seguir vejamos outra abordagem onde definimos um método para obter os dados usando a classe WebRequest para fazer a requisição para a Uri e obter os dados no formarto JSON deserializando para um DataTable:
private JArray GetRESTDados(string uri)
{
var webRequest = (HttpWebRequest)WebRequest.Create(uri);
var webResponse = (HttpWebResponse)webRequest.GetResponse();
var reader = new StreamReader(webResponse.GetResponseStream());
string s = reader.ReadToEnd();
return JsonConvert.DeserializeObject<JArray>(s);
}
|
Agora basta chamar o método passando a Uri e retornando o datatable para o DataGridView:
private void btnAcessar_Click(object sender, EventArgs e)
{
dgvDados.DataSource = GetRESTDados(txtUrl.Text);
}
|
Pegue o projeto aqui: WF_RestTable.zip (sem as referências)
João
14:21
Veja os
Destaques e novidades do SUPER DVD Visual Basic (sempre atualizado) : clique
e confira !
Quer migrar para o VB .NET ?
Quer aprender C# ??
Quer aprender os conceitos da Programação Orientada a objetos ? Quer aprender o gerar relatórios com o ReportViewer no VS 2013 ? Quer aprender a criar aplicações Web Dinâmicas usando a ASP .NET MVC 5 ? |
Referências:
Super DVD Vídeo Aulas - Vídeo Aula sobre VB .NET, ASP .NET e C#
Super DVD C# - Recursos de aprendizagens e vídeo aulas para C#
ASP .NET Core 2 - MiniCurso Básico - Macoratti
ASP .NET Core - Macoratti
Conceitos - .NET Framework versus .NET Core - Macoratti
ASP .NET Core - Conceitos Básicos - Macoratti.net
C# - Converter de JSON para Object e vice-versa - Macoratti
VB .NET - Exibindo dados JSON em um DataGridView - Macoratti
VB .NET - Consumindo um Web Service JSON ... - Macoratti.net
Serializando/Deserializando JSON usando contrato de ... - Macoratti
VB .NET - Tratando JSON com LINQ - Macoratti
C# - Convertendo DataTable para JSON - Macoratti