Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 13

Discussione: Generazione file JSON

  1. #1
    Utente di HTML.it
    Registrato dal
    Jul 2006
    Messaggi
    3,072

    Generazione file JSON

    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

  2. #2
    Utente di HTML.it
    Registrato dal
    Jul 2006
    Messaggi
    3,072
    Nessun aiutino??

  3. #3
    Utente di HTML.it L'avatar di pietro09
    Registrato dal
    Jan 2002
    Messaggi
    10,116
    utilizzabili lato client con javascript?
    Pietro

  4. #4
    Utente di HTML.it
    Registrato dal
    Jul 2006
    Messaggi
    3,072
    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

  5. #5
    Utente di HTML.it L'avatar di rsdpzed
    Registrato dal
    Aug 2001
    Messaggi
    764
    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

  6. #6
    Utente di HTML.it
    Registrato dal
    Jul 2006
    Messaggi
    3,072
    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

  7. #7
    Utente di HTML.it L'avatar di rsdpzed
    Registrato dal
    Aug 2001
    Messaggi
    764
    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.

  8. #8
    :-((( 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

  9. #9
    Utente di HTML.it L'avatar di rsdpzed
    Registrato dal
    Aug 2001
    Messaggi
    764
    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
    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;
            }
        }
    se non conosci ado.net è un altro discorso... cerca su google, es (il primo che ho trovato): http://support.microsoft.com/kb/301216.

  10. #10
    Utente di HTML.it
    Registrato dal
    Jul 2006
    Messaggi
    3,072
    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

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2026 vBulletin Solutions, Inc. All rights reserved.