¿Alguien sabe cómo convertir una cadena json en DataTable de asp.net? Llegué a saber sobre el Deserialize, necesita la clase, solo quiero que la datatable sea devuelta. ¿Alguien puede decirme cómo convertirlo a tabla de datos?Cómo convertir json en tabla de datos?
Respuesta
Suponiendo que la cadena de JSON es una lista de objetos, cada objeto se corresponderá con una fila de la DataTable, a saber:
public DataTable DerializeDataTable()
{
const string json = @"[{""Name"":""AAA"",""Age"":""22"",""Job"":""PPP""},"
+ @"{""Name"":""BBB"",""Age"":""25"",""Job"":""QQQ""},"
+ @"{""Name"":""CCC"",""Age"":""38"",""Job"":""RRR""}]";
var table = JsonConvert.DeserializeObject<DataTable>(json);
return table;
}
tal fin es necesario Json.NET framework.
Si su estructura JSON es diferente, publíquela. Atentamente.
no estoy seguro de qué biblioteca JSON que está utilizando, pero es posible que desee echar un vistazo a JSON.NET ya que hay un tipo de convertidor objeto allí llamado a esto:
Newtonsoft.Json.Converters.DataTableConverter
// Summary:
// Converts a System.Data.DataTable to and from JSON.
No he utilizado esta funcionalidad antes, pero podría tener un ir con ella.
Es simple.
Si está en framework 2.0, debe importar json.net (http://json.codeplex.com/) en su proyecto, si su framework es superior, tiene json.
El código en marco vb.net 2,0:
Dim Table DataTable
Table = Json.JsonConvert.DeserializeObject(Of DataTable)(Json_string)
Eso es todo.
Tenga cuidado json.net (http://json.codeplex.com/), no respeta table.tablename y claves principales . Debes hacerlo después de convertir el db. – AAP
Esta pregunta está desactualizada, pero alguien puede estar buscando respuestas, así que aquí va. No funcionó con el viejo JSON.NET, pero hoy me actualicé a la última versión y viola! Funciona muy bien.
¡Hemos serializado una DataTable en Json de ida y vuelta, cero problemas! Esta es una característica nueva impresionante.
Espero que ayude a los demás también. Aclamaciones.
using Newtonsoft.Json;
string json = "[{"clientID":"1788","projectID":"19"},{"clientID":"1789","projectID":"24"},{"clientID":"1790","projectID":"24"},{"clientID":"1790","projectID":"23"},{"clientID":"1790","projectID":"21"}]";
DataTable tester = (DataTable) JsonConvert.DeserializeObject(json, (typeof(DataTable)));
Código de la forma anteriormente
public object Deserialize(string jsonText, Type valueType)
{
try
{
Newtonsoft.Json.JsonSerializer json = new Newtonsoft.Json.JsonSerializer();
json.NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore;
json.ObjectCreationHandling = Newtonsoft.Json.ObjectCreationHandling.Replace;
json.MissingMemberHandling = Newtonsoft.Json.MissingMemberHandling.Ignore;
json.ReferenceLoopHandling = Newtonsoft.Json.ReferenceLoopHandling.Ignore;
StringReader sr = new StringReader(jsonText);
Newtonsoft.Json.JsonTextReader reader = new JsonTextReader(sr);
object result = json.Deserialize(reader, valueType);
reader.Close();
return result;
}
catch (Exception ex)
{
throw ex;
}
}
Deserialize su jsonString a alguna clase
List<User> UserList = JsonConvert.DeserializeObject<User>(jsonString);
Escribir siguiente método de extensión a su proyecto
public static DataTable ToDataTable<T>(this IList<T> data)
{
PropertyDescriptorCollection props =
TypeDescriptor.GetProperties(typeof(T));
DataTable table = new DataTable();
for(int i = 0 ; i < props.Count ; i++)
{
PropertyDescriptor prop = props[i];
table.Columns.Add(prop.Name, prop.PropertyType);
}
object[] values = new object[props.Count];
foreach (T item in data)
{
for (int i = 0; i < values.Length; i++)
{
values[i] = props[i].GetValue(item);
}
table.Rows.Add(values);
}
return table;
}
llamada método de extensión como
UserList.ToDataTable<User>();
Estoy tratando de usar el método de extensión anterior: sin errores en la compilación. Pero obtengo un error de compilación: "Mensaje de error del compilador: CS0121: la llamada es ambigua entre los siguientes métodos o propiedades: 'ExtensionHelpers.ToDataTable <_Default.Jobs> (System.Collections.Generic.IList <_D efault.Jobs>) 'y' ExtensionHelpers.ToDataTable <_Default.Jobs> (System.Collections.Generic.IList <_D efault.Jobs>) '"¿Tiene alguna idea de lo que podría estar causando? –
- 1. Cómo convertir datos jQuery.serialize() al objeto JSON?
- 2. Convierta datos json en una tabla html
- 3. ¿Cómo convertir la siguiente tabla a JSON con javascript?
- 4. Cómo convertir HttpEntity en JSON?
- 5. cómo convertir JSON a cadena
- 6. Cómo convertir objeto de JSON en Symfony2
- 7. Cómo convertir una tabla a una trama de datos
- 8. Tabla HTML a JSON
- 9. Convierta datos de una tabla HTML en un objeto JSON en jQuery
- 10. Convertir inválido json en json válido
- 11. Cómo convertir a formato JSON de D3?
- 12. Convertir cadena JSON en el objeto JSON
- 13. Convertir JSON cadena en serie de objetos JSON en JavaScript
- 14. cómo convertir el objeto Doctrine en json
- 15. Cómo convertir JSON en el objeto
- 16. cómo convertir XML a JSON usando jQuery
- 17. Convertir NSData a JSON
- 18. Cómo convertir DateTime de JSON a C#?
- 19. Convertir JSON para DataTable
- 20. Convertir matriz a JSON
- 21. Convertir JSON en Árbol HTML
- 22. Cómo imprimir datos json.
- 23. cómo convertir CSV a tabla en Oracle
- 24. Convertir objeto de JSON en MVC 4
- 25. Cómo puedo convertir una tabla de datos a un conjunto de datos relacionado
- 26. datos POST en formato JSON
- 27. Convertir objeto de cadena JSON en C#
- 28. tabla de datos Convertir a Excel 2007 (.xlsx)
- 29. convertir rss a JSON
- 30. matriz JSON convertir a matriz de Javascript
Has encontrado la solución. Estoy enfrentando el mismo problema. 'La cadena de entrada no estaba en el formato correcto. No se pudo almacenar <6.94127> en Latitude Co lumn. El tipo esperado es Int64'. Estoy usando Newtonsoft.Json.dll. ¿alguna solución? – Piraba
La DataTable incorporada no serializa la información de la columna, tiene que inferir el tipo de columna de los datos. He creado un convertidor mejorado aquí https://github.com/chris-herring/DataTableConverter –