ATENCIÓN AL CLIENTE: +34 923 199 148

Convertir un DataSet tipado a un DataSet en JSON

En muchas ocasiones, cuando estamos generando un servicio web, necesitamos generar un String JSON con un DataSet.

Si lo generamos utilizando como fuente en DataSet tipado generado con ADO.NET, nos va a generar unos códigos que en la app móvil nos va a generar problemas. Para evitarlo vamos a ver un método que realizará la conversión del DataSet tipado a un DataSet estándar.

Previamente, tenemos que tener instalado en nuestro Visual Studio las librerías de http://www.newtonsoft.com/json

Necesitamos incluir las siguientes librerías:

using System.Data;
using Newtonsoft.Json;

Y el código del método es el siguiente:

public static String GetDSJSon(System.Data.DataTable tabla_origen, String nombre)
{
   DataSet dsGenerado = new DataSet(“dataSet”);
   dsGenerado.Namespace = “NetFrameWork”;
   DataTable tabla = new DataTable();
   tabla.TableName = nombre;
   for (int i=0;i< tabla_origen.Columns.Count;i++)
   {
      DataColumn columna = new DataColumn(tabla_origen.Columns[i].ColumnName, tabla_origen.Columns[i].DataType);
      tabla.Columns.Add(columna);
   }
   dsGenerado.Tables.Add(tabla);
   for (int i = 0; i < tabla_origen.Rows.Count; i++)
   {
      DataRow newRow = tabla.NewRow();
      for (int j =0;j< tabla_origen.Columns.Count;j++)
      {
         newRow[tabla_origen.Columns[j].ColumnName] = tabla_origen.Rows[i][j];
      }
      tabla.Rows.Add(newRow);
   }
   dsGenerado.AcceptChanges();
   string json = JsonConvert.SerializeObject(dsGenerado, Formatting.Indented);
   return json;
}

Ahora un ejemplo de llamada al método anterior podría ser el siguiente:

String json = Datos.Interfaz.GetDSJSon(dst.vista_portada, “dsEjemplo”);

Donde pasamos dst.vista_portada, que es una tabla tipada y el nombre del dataset que vamos a generar.

Más información

Quizá te interese...
Llamada a un método en el servidor en C# desde un evento controlado en el cliente vía JavaScript en ASP.NET usando Telerik.
Deja un comentario...
Suscribirme
Notificación de
guest
0 Comentarios
Comentarios en línea
Ver todos los comentarios