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

Discussione: From hashmap to Json

  1. #1

    From hashmap to Json

    Salve,
    devo parsare un HashMap<Object, Arraylist<Object>> in Json.
    Uso la libreria Gson:

    Gson gsCategories = new Gson();
    String jsonStringCategories = gsCategories.toJson(hashmap);

    Il parsing dell arraylist viene effettuato correttamente ma l'Object esce nella forma Object@1234ab.
    Ho fatto l'override del toString di Object ma non esce parsato come lo è l'arraylist... Dov'è il problema?

  2. #2
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284
    Quote Originariamente inviata da Cyber-X91! Visualizza il messaggio
    Dov'è il problema?
    Senza sapere di più è un po' difficile dirlo. Gli oggetti nella lista di che tipo sono? Di una tua classe? E come è fatta?

    Gson mappa i campi (attenzione: NON le proprietà secondo le specifiche JavaBeans) degli oggetti. Quindi se nel ArrayList tu avessi es. un oggetto di classe Persona che ha i campi (anche marcati private) nome e cognome: avresti un oggetto JSON

    { "nome": "......", "cognome": "........" }
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  3. #3
    Quote Originariamente inviata da andbin Visualizza il messaggio
    Senza sapere di più è un po' difficile dirlo. Gli oggetti nella lista di che tipo sono? Di una tua classe? E come è fatta?

    Gson mappa i campi (attenzione: NON le proprietà secondo le specifiche JavaBeans) degli oggetti. Quindi se nel ArrayList tu avessi es. un oggetto di classe Persona che ha i campi (anche marcati private) nome e cognome: avresti un oggetto JSON

    { "nome": "......", "cognome": "........" }
    Grazie mille per la risposta.
    Allora HashMap<Categoria, ArrayList<Categoria>>
    L'arraylist ripeto viene parsato correttamente, il problema ce l'ho sul parsare la key dell'hashmap quindi gli oggetti Categoria.. Sono classi che ho creato io. Scusami forse non mi ero spiegato bene... è la key dell hashmap che mi esce Categoria@1244ab. Cosa hai bisogno di sapere?

  4. #4
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284
    Quote Originariamente inviata da Cyber-X91! Visualizza il messaggio
    è la key dell hashmap che mi esce Categoria@1244ab. Cosa hai bisogno di sapere?
    Come è fatta la classe.

    Comunque ti ripeto: Gson mappa i campi.

    EDIT: già mi è venuto in mente adesso rileggendo che hai usato

    HashMap<Categoria, ArrayList<Categoria>>

    In JSON una "chiave" all'interno di un oggetto può essere solo una stringa. Quindi Gson sicuramente invoca toString() sui Categoria usati come chiavi del HashMap!
    Ultima modifica di andbin; 09-11-2015 a 22:51
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  5. #5
    Quote Originariamente inviata da andbin Visualizza il messaggio
    Come è fatta la classe.

    Comunque ti ripeto: Gson mappa i campi.

    EDIT: già mi è venuto in mente adesso rileggendo che hai usato

    HashMap<Categoria, ArrayList<Categoria>>

    In JSON una "chiave" all'interno di un oggetto può essere solo una stringa. Quindi Gson sicuramente invoca toString() sui Categoria usati come chiavi del HashMap!
    Cosa si intente per "mappa i campi"?
    Ah ok e quindi non ce un modo magari con un altra libreria per usare Categoria anziche stringa e parsarla?

  6. #6
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284
    Quote Originariamente inviata da Cyber-X91! Visualizza il messaggio
    Cosa si intente per "mappa i campi"?
    In generale, per mappare gli oggetti in JSON Gson si basa (per suo esplicito design) solo sui nomi dei campi negli oggetti. NON sulle proprietà deducibili dai getter/setter. L'esempio l'ho fatto prima.

    Quote Originariamente inviata da Cyber-X91! Visualizza il messaggio
    Ah ok e quindi non ce un modo magari con un altra libreria per usare Categoria anziche stringa e parsarla?
    Ma forse non hai ancora capito: in JSON una chiave è SOLO una stringa. Il problema l'ho evidenziato in rosso prima. Le chiavi nel HashMap sono oggetti Categoria. Ma ti ripeto che in JSON può essere solo una stringa.

    Quindi la questione è: a chi/a cosa serve il JSON generato?

    P.S. continui a parlare di "parsare" ma in questo contesto non vuol dire nulla.
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  7. #7
    se ti dicessi a cosa serve non risolverei comunque il mio problema. Per parsare intendo dire trasformare l'oggetto categoria ed i suoi campi nel formato JSON. Ok quindi ho capito che non posso generare il JSON di una key... Era questo il mio dubbio e ti ringrazio per avermelo chiarito... Non posso passare solo una stringa come chiave in quanto nell oggetto categoria ho degli elementi che mi servono quindi detto questo hai una idea migliore di come potrei risolvere? Devo passare la stringa tramite servizio Rest e devo per forza avere quelle informazioni in JSON... Magari hai piu esperienza di me e puoi consigliarmi

  8. #8
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284
    Quote Originariamente inviata da Cyber-X91! Visualizza il messaggio
    Non posso passare solo una stringa come chiave in quanto nell oggetto categoria ho degli elementi che mi servono
    E quindi come vuoi fare il JSON? Sei in grado di scrivere a mano (un esempio, chiaramente, anche abbozzato) come vorresti che fosse?

    Quote Originariamente inviata da Cyber-X91! Visualizza il messaggio
    Magari hai piu esperienza di me e puoi consigliarmi
    Se non so cosa vuoi fare .....

    Quote Originariamente inviata da Cyber-X91! Visualizza il messaggio
    Per parsare intendo dire trasformare l'oggetto categoria ed i suoi campi nel formato JSON.
    Ti ripeto che "parsare", in questo contesto, ha poco/nessun senso. Il parsing è quando hai una stringa es. "1234" e la devi convertire in int (il parseInt di Integer) oppure c'è in input un testo da analizzare con una sua struttura particolare o una grammatica complessa apposita.

    Quello che fai qui è che il toJson di Gson serializza un oggetto nella sua rappresentazione JSON.
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  9. #9
    ah ok serializzare allora grazie per avermi corretto. Hai perfettamente ragione sul parsing mi sono espresso male... Comunque devo fare in modo che quando invio la stringa devo riconoscere qual è la chiave e qual è l arraylist

  10. #10
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284
    Quote Originariamente inviata da Cyber-X91! Visualizza il messaggio
    Comunque devo fare in modo che quando invio la stringa devo riconoscere qual è la chiave e qual è l arraylist
    Vuoi scrivere un JSON di esempio che vuoi avere? O dobbiamo chiamare il mago Otelma?
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

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.