Qualcuno sa come convertire una stringa json in DataTable da asp.net? Sono venuto a conoscenza della deserializzazione, ha bisogno della classe, voglio solo il datatable come restituito. Qualcuno può dirmi come convertirlo in datatable?Come convertire JSON in datatable?
risposta
Supponendo che la stringa JSON è un elenco di oggetti, ogni oggetto sarà conforme a una riga nella DataTable, cioè:
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;
}
Ciò richiede l'Json.NET framework.
Se la struttura JSON è diversa, si prega di postarla. I migliori saluti.
non sono sicuro quale libreria JSON che si sta utilizzando, ma si potrebbe desiderare di dare un'occhiata a JSON.NET in quanto v'è un tipo di oggetto convertitore in là chiamato questo:
Newtonsoft.Json.Converters.DataTableConverter
// Summary:
// Converts a System.Data.DataTable to and from JSON.
Non ho usato questa funzionalità prima, ma potresti provarla.
È semplice.
Se si è nel framework 2.0, è necessario importare json.net (http://json.codeplex.com/) nel progetto, se il framework è superiore, ha json.
Il codice in vb.net framework 2.0:
Dim Table DataTable
Table = Json.JsonConvert.DeserializeObject(Of DataTable)(Json_string)
Questo è tutto.
Be carefull json.net (http://json.codeplex.com/), non rispetta table.tablename e le chiavi primarie . Devi asserirlo dopo aver convertito il db. – AAP
Questa domanda è in qualche modo obsoleta, ma qualcuno potrebbe cercare risposte, quindi ecco qui. Non ha funzionato con il vecchio JSON.NET, ma oggi ho aggiornato alla versione più recente e viola! Funziona alla grande.
Hanno serializzato un DataTable in JSON avanti e indietro, zero problemi! Questa è una nuova fantastica funzionalità.
Spero che aiuti anche gli altri. Saluti.
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)));
Codice per il metodo di cui sopra
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;
}
}
deserializzare tua jsonstring a qualche classe
List<User> UserList = JsonConvert.DeserializeObject<User>(jsonString);
Scrivi seguente metodo di estensione per il vostro progetto
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;
}
chiamata metodo di estensione come
UserList.ToDataTable<User>();
Sto provando a utilizzare il metodo di estensione sopra riportato - Nessun errore durante la compilazione. Ma ottengo un errore di compilazione: "Messaggio di errore del compilatore: CS0121: la chiamata è ambigua tra i seguenti metodi o proprietà: 'ExtensionHelpers.ToDataTable <_Default.Jobs> (System.Collections.Generic.IList <_D efault.Jobs>) 'e' ExtensionHelpers.ToDataTable <_Default.Jobs> (System.Collections.Generic.IList <_D efault.Jobs>) '"Hai idea di cosa potrebbe causarlo? –
- 1. Come convertire IQueryable in DataTable
- 2. Come convertire DataSet in DataTable
- 3. convertire il file csv in json object datatable
- 4. Converti JSON per DataTable
- 5. Come convertire un datareader in datatable
- 6. Come convertire JSON in stringa?
- 7. Come convertire JSON in oggetto
- 8. Come convertire HttpEntity in JSON?
- 9. Converti DataTable in JSON con solo valore
- 10. Come convertire la lista generica C# in json usando json.net?
- 11. Visualizzazione oggetto JSON in YUI Datatable
- 12. Come convertire un DataTable/DataSet in un oggetto ObjectDataSource
- 13. Come convertire il file excel stream in C# datatable?
- 14. Come posso convertire un DataTable in un oggetto dinamico?
- 15. Come convertire un datatable in un set di dati correlato
- 16. Come convertire POJO in JSON e viceversa?
- 17. Come convertire List per JSON in Java
- 18. Come convertire JSON in BSON utilizzando Json.NET
- 19. Come convertire postgres json in intero
- 20. Come convertire le classi JSON in C#?
- 21. come convertire oggetto Doctrine in json
- 22. Come convertire un array JSON in yii2
- 23. Come convertire in formato JSON di D3?
- 24. convertire mysqli risultato in json
- 25. Datatable angolare e struttura JSON isue
- 26. Markup di escape in jQuery datatable basato su JSON?
- 27. Converti DataTable in JSON con la chiave per riga
- 28. Il modo più efficiente di convertire un DataTable in CSV
- 29. ADO.NET: convertire un DataTable in un array di DataRows
- 30. come caricare la variabile JSON locale utilizzando jquery datatable
Hai trovato la soluzione. Sto affrontando lo stesso problema. 'La stringa di input non era in un formato corretto. Non è possibile memorizzare <6.94127> in Latitude Co lumn. Il tipo previsto è Int64'. Sto usando Newtonsoft.Json.dll. qualche soluzione? – Piraba
Il DataTable incorporato non serializza le informazioni sulle colonne, deve inferire il tipo di colonna dai dati. Ho creato un convertitore migliorato qui https://github.com/chris-herring/DataTableConverter –