Ciao a tutti, ho un progetto realizzato con FMK .NET 2.0, come posso generare un file JSON partendo dai risultati di una query?
Nel dettagli mi basta che la chiamata ad una pagina generi in output i dati in JSON
Grazie
Ciao a tutti, ho un progetto realizzato con FMK .NET 2.0, come posso generare un file JSON partendo dai risultati di una query?
Nel dettagli mi basta che la chiamata ad una pagina generi in output i dati in JSON
Grazie
Nessun aiutino??
utilizzabili lato client con javascript?
Pietro
nella pagina ASPX devo sicuramente eseguire la query... quindi ipotizzando di avere tutto in un dataset, devo creare il JSON corrispondente con campi/valori
fatto questo chiamando la pagina www.dominio.com/export.aspx
viene visualizzato in output (nella pagina) il JSON.
Grazie
poichè il framework è il 2.0 non puoi usare javascriptSerializer.
ho fatto e ho trovato questo:
http://james.newtonking.com/pages/json-net.aspx
che dovrebbe fare al caso tuo![]()
Prima di tutto grazie per l'aiuto!!
Avevo trovato quel link ma ho qualche problemino nell'applicazione :-(
Ho scaricato la cartella Json45r11
con all'interno sia la BIN sia Source
Copio il contenuto di Bin/Net20 nella bin del mio progetto
a questo punto, partendo da una semplice query SQL che mi ritorna dei risultati, come posso mappare/creare automaticamente il JSON con i nomi dei campi (ed i records) della query?
Grazie
Non puoi farlo direttamente partendo dal dataset o dal datatable. percio se il tuo dataset rappresenta dei prodotti devi crearti una classe Prodotto con le proprietà pari ai campi che vuoi esportare. Poi devi creare "prodotti" che è una List<Prodotto> e la riempi con i dati del dataset o del datatable (ciclando il dataset). Infine basta scrivere:
string json = JsonConvert.SerializeObject(prodotti);
e fai tutto.
P.S. dovrai inserire una direttiva using in testa altrimenti non riconosce JsonConvert, non so esattamente quale ma lo risolve facilmente visualstudio.
:-((( non credevo di dover creare una classe specifica.
Scusa la domanda banale, mi potresti fare un esempio di come creare la classe, come gestirla nella mia pagina che eseguirà la generazione del JSON per poi riempire la lista con i valori di un sqldatasource ...
Grazie infinite
Iceberg
no. non si fa con i controlli server come il datasource. Si fa con ado.net per esempio con un dataset o un datareader, e facendo una query al database.
questo è un esempio che compila e funziona
GetProdotti.ashx
se non conosci ado.net è un altro discorso... cerca su google, es (il primo che ho trovato): http://support.microsoft.com/kb/301216.codice:class Prodotto { public string ID { get; set; } public string Nome { get; set; } } public class GetProdotti : IHttpHandler { public void ProcessRequest(HttpContext context) { List<Prodotto> prodotti = new List<Prodotto>(); DataSet dataSet = RecuperaDati(); foreach (DataRow riga in dataSet.Tables["Prodotti"].Rows) { Prodotto prodotto = new Prodotto(); prodotto.ID = riga["ID"].ToString(); prodotto.Nome = riga["Nome"].ToString(); prodotti.Add(prodotto); } string json = JsonConvert.SerializeObject(prodotti); context.Response.ContentType = "application/json"; context.Response.Write(json); } public bool IsReusable { get { return false; } } /// <summary> /// Funzione che recupera i dati dal tuo db e li memorizza in un dataset /// </summary> /// <returns>Il dataset con i dati della query</returns> private DataSet RecuperaDati() { // questo dataset lo devi recuperare dalla tua sorgente dati! // per esempio con dataadapter, sqlconnection e sqlcommand. // qui lo riempio a mano SOLO PER SEMPLICITA // e per rendere l'esempio funzionante. DataSet dataSet = new DataSet(); DataTable tableProdotti = new DataTable("Prodotti"); tableProdotti.Columns.Add("ID", typeof(string)); tableProdotti.Columns.Add("Nome", typeof(string)); dataSet.Tables.Add(tableProdotti); dataSet.Tables["Prodotti"].Rows.Add("1", "Prodotto 1"); dataSet.Tables["Prodotti"].Rows.Add("2", "Prodotto 1"); dataSet.Tables["Prodotti"].Rows.Add("3", "Prodotto 1"); return dataSet; } }
Grazie mille, sto seguendo passo passo il tuo suggerimento per capire ogni singolo dettaglio.
1)
Nel mio progetto ho files aspx e cs, per quale motivo hai utilizzato un ashx? Come lo integro tra i files attuali del mio progetto.
2)
La funzione principale è "GetProdotti" che esegue la chiamata per caricare la lista e leggere i dati dal DB. Dove richiamo la GetProdotti?
3)
RecuperaDati() carica i dati in un DataSet
Posso fare qualche cosa del tipo:
using (SqlConnection c = new SqlConnection(
Properties.Settings.Default.DataConnectionString))
{
c.Open();
using (SqlDataAdapter a = new SqlDataAdapter("SELECT * FROM Tabella", c))
{
DataTable t = new DataTable();
a.Fill(t);
// dataGridView1.DataSource = t;
//A questo ho un dataTable e potrei fare
DataSet dataSet = new DataSet();
dataSet[0] = t;
return dataSet
}
Grazie infinite ancora