Visualizzazione dei risultati da 1 a 3 su 3

Discussione: JSONArray toString()

  1. #1
    Utente di HTML.it
    Registrato dal
    May 2014
    Messaggi
    22

    JSONArray toString()

    Salve a tutti come da titolo ho problemi a fare il toString di un json array, ho una Calendar che mi piacerebbe stampare in maniera corretta cioè come faccio nella sua classe :
    codice:
            java.util.Date utilDate = this.getDataOra().getTime();
            DateFormat df = new SimpleDateFormat("dd/MM/yyyy HH:mm:ss");
            String data = df.format(utilDate);
    Il codice invece Json è il seguente :

    codice:
        public Representation visualizza() throws DAOException, JSONException {
            JSONArray ja = new JSONArray();
            DAODinamico dao = new DAODinamico();
            List<Registrazione> listaRegistrazioni = dao.doSelect();
            for (Object u : listaRegistrazioni) {
                JSONObject obj = new JSONObject();
                Registrazione r = (Registrazione) u;
                obj.put("data ed ora", r.getDataOra());
                obj.put("cpuSis", r.getCpuSis());
                obj.put("memUsed", r.getMemUso());
                obj.put("core1", r.getCore1());
                obj.put("core2", r.getCore2());
                obj.put("core3", r.getCore3());
                obj.put("core4", r.getCore4());
                obj.put("MbTx", r.getByteRx());
                obj.put("MbRx", r.getByteTx());
                ja.put(obj);
    
    
            }
            return new JsonRepresentation(ja.toString());
        }
    i dao mi gestiscono la persistenza e fanno le insert e le select sul db, devo esporre questi dati tramite jSon, dovrei fare l'override del metodo toString() di json Array ma mi continua a stampare il calendar nel classico modo "brutto" senza esser formattato

    Ringrazio in anticipo per una risposta

  2. #2
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284
    Quote Originariamente inviata da lords91 Visualizza il messaggio
    codice:
                obj.put("data ed ora", r.getDataOra());
    Quindi, scusa la domanda, il problema è su questa informazione qui?
    Se come immagino getDataOra() restituisce un Calendar, effettivamente il suo toString() è parecchio noioso e prolisso.

    Prima alternativa: verifica se la API che stai usando per JSON è in grado di registrare un "convertitore" che si può applicare al tipo Calendar. O magari se ha una opzione per una specie di "pretty-print" delle date.

    EDIT: se appunto come penso, stai usando la api org.json, allora no, non c'è sicuramente questa feature. Questa API è davvero basilare e terra-terra per trattare JSON.

    Seconda alternativa: nessuno ti vieta, credo, di formattare tu la data e assegnarla alla proprietà con put. Questo vale sempre.

    Quote Originariamente inviata da lords91 Visualizza il messaggio
    return new JsonRepresentation(ja.toString());
    Stai usando il framework Restlet? Lo conosco solo di nome ma ho cercato JsonRepresentation e sono incappato nel suo javadoc.

    Da quanto vedo, JsonRepresentation ha anche il costruttore

    public JsonRepresentation(JSONArray jsonArray)

    Dove JSONArray è org.json.JSONArray. Se il tuo JSONArray è questo ... non hai bisogno di fare toString().
    Ultima modifica di andbin; 03-12-2014 a 19:13
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  3. #3
    Utente di HTML.it
    Registrato dal
    May 2014
    Messaggi
    22
    Quote Originariamente inviata da andbin Visualizza il messaggio
    Quindi, scusa la domanda, il problema è su questa informazione qui?
    Se come immagino getDataOra() restituisce un Calendar, effettivamente il suo toString() è parecchio noioso e prolisso.

    Prima alternativa: verifica se la API che stai usando per JSON è in grado di registrare un "convertitore" che si può applicare al tipo Calendar. O magari se ha una opzione per una specie di "pretty-print" delle date.

    EDIT: se appunto come penso, stai usando la api org.json, allora no, non c'è sicuramente questa feature. Questa API è davvero basilare e terra-terra per trattare JSON.

    Seconda alternativa: nessuno ti vieta, credo, di formattare tu la data e assegnarla alla proprietà con put. Questo vale sempre.


    Stai usando il framework Restlet? Lo conosco solo di nome ma ho cercato JsonRepresentation e sono incappato nel suo javadoc.

    Da quanto vedo, JsonRepresentation ha anche il costruttore

    public JsonRepresentation(JSONArray jsonArray)

    Dove JSONArray è org.json.JSONArray. Se il tuo JSONArray è questo ... non hai bisogno di fare toString().
    Esattamente hai centrato il punto ! Sto sviluppando un'applicazione client server per la mia tesi di laurea ma sono tecnologie che non ho mai visto ed il mio relatore non è così tanto paziente da indicarmi cosa utilizzare.
    E' stato lui infatti a dirmi di scaricare org.json , cercando di capire come funzionasse l'override del toString infatti ho trovato tante altre api json che integrano cose tipo formattatore di date.

    L'avevo pensato di passargli la stringa e non la data ma poi riuscirei lato client a fare delle query e farmi restituire una lista con data compresa tra due valori ?

    Comunque si sto usando restlet l'avevo notato che era inutile mettere ja.toString() ma l'ho rimasto per far notare al mio professore che il codice di esempio che mi aveva mandato lui era ormai deprecato.
    Secondo lui infatti JSONArray ha un metodo add e non put ed un metodo toJSONString() che invece non c'è.

    Le strade da prendere a mio parere sono due
    1) Cambiare api json con una più completa
    2) Passargli direttamente la stringa.

    Ti ringrazio per l'esauriente risposta

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 © 2025 vBulletin Solutions, Inc. All rights reserved.