Serializar un DataSet a JSON
Recientemente me encontre con la necesidad en ASP.NET de serializar un DataSet para enviarlo, via AJAX, a un browser, para luego allí procesarlo convenientemente.
Un buen compañero de trabajo, Leonardo Villalva, es el autor de un código en el viejo ASP, para serializar ADO Recordset a formato JSON. Basándome en ese código arme esta clase que permite hacer la misma tarea en .NET, y aquí la publico para compartirla con ustedes.
' ------------------------------------------------------------------
' Clase : JSONSerializer
' Autor : Julio González
' Fecha : 14/07/2008
' ------------------------------------------------------------------
Imports Microsoft.VisualBasic
Imports System.Data
Namespace JG
Public Class JSONSerializer
Public Function DataTableSerializer(ByVal dt As DataTable) As String
Dim JsonString As New StringBuilder()
Dim tmpR, tmpA As StringBuilder
'el objeto no existe o no tiene filas
If dt Is Nothing Or dt.Rows.Count = 0 Then
Return String.Empty
End If
'serializo
JsonString.Append("{")
JsonString.Append("filas:[")
tmpA = New StringBuilder
For Each f As DataRow In dt.Rows
tmpA.Append("{")
tmpR = New StringBuilder
For Each c As DataColumn In dt.Columns
tmpR.Append(c.ColumnName & ":""" & f(c.ColumnName).ToString & """,")
Next
tmpA.Append((tmpR.ToString.Remove((tmpR.ToString.Length - 1), 1)))
tmpA.Append("},")
Next
JsonString.Append(tmpA.ToString.Remove((tmpA.ToString.Length - 1), 1))
JsonString.Append("]}")
Return JsonString.ToString
End Function
End Class
End Namespace
Espero que les sea útil.
7 Comentarios:
Perfecto
Buena
tienes otra porfa que haga lo contrario de json a datatable y si no es mucho pedir tambien que se incluyan los tipos da datos del datatble
todo perfecto pero que pasaria si hay mas de 1000 registros lo resultados serian los mismos?
Con cualquier método que elijas, llámese html, json, xml, que elijas para enviar info a un navegador, si mandas 1000 filas tendrás problemas.
Para eso está la paginación y el cache de .NET
Generalmente serializas lo necesario para hacer parte del trabajo y, si necesitas más, paginas.
cuando recibo el datatable serializado como lo puedo parsear?
esta bien asi?
resultado = $.parseJSON(data.d);
la data es lo que me llega al cliente, espero sus respuestas, gracias
Lo conviertes en un objeto Javascript con un simple EVAL.
eval("var DS=" + data.d);
Mandar un comentario