2017-05-07 6 views
0

Ich versuche, ein einfaches Java-Objekt in JSON zu konvertieren. Ich verwende Google Gson Bibliothek und es funktioniert, aber ich möchte ein komplettes JSON-Objekt in dieser Form:Java-Objekt in JSON konvertieren

{"Studente":[{ "nome":"John", "cognome":"Doe","matricola":"0512","dataNascita":"14/10/1991"}]} 

Das ist meine Klasse:

public class Studente { 

    private String nome; 
    private String cognome; 
    private String matricola; 
    private String dataNascita; 

    public Studente(){ 

    } 

    public String getNome() { 
     return nome; 
    } 

    public void setNome(String nome) { 
     this.nome = nome; 
    } 

    public String getCognome() { 
     return cognome; 
    } 

    public void setCognome(String cognome) { 
     this.cognome = cognome; 
    } 

    public String getMatricola() { 
     return matricola; 
    } 

    public void setMatricola(String matricola) { 
     this.matricola = matricola; 
    } 

    public String getDataNascita() { 
     return dataNascita; 
    } 

    public void setDataNascita(String dataNascita) { 
     this.dataNascita = dataNascita; 
    } 

} 

Dies ist Tester:

Studente x = new Studente(); 
x.setCognome("Doe"); 
x.setNome("Jhon"); 
x.setMatricola("0512"); 
x.setDataNascita("14/10/1991"); 
Gson gson = new Gson(); 
String toJson = gson.toJson(x, Studente.class); 
System.out.println("ToJSON "+toJson); 

Ich habe dies in toJson: {"nome":"Jhon","cognome":"Doe","matricola":"0512","dataNascita":"14/10/1991"}

+0

Warum denken Sie, dass das ein komplettes JSON-Objekt ist? –

+0

ich brauche auch den Namen der Klasse in JSON-String –

+0

@JunbangHuang nicht funktionieren, gibt es nicht in json ist Studente: [{ "nome": "Jhon", "cognome": "Doe", "matricola": "0512 "," dataNascita ":" 14.10.1991 "}] –

Antwort

1

Es ist am besten, einen Wrapper für die Schülerliste zu schreiben. dies wie:

Studente x=new Studente(); 
x.setCognome("Doe"); 
x.setNome("Jhon"); 
x.setMatricola("0512"); 
x.setDataNascita("14/10/1991"); 
Gson gson=new Gson(); 
StudentWrapper studentWrapper = new StudentWrapper(); 
studentWrapper.addStudent(x); 
String toJson=gson.toJson(studentWrapper, StudentWrapper.class); 
System.out.println("ToJSON "+toJson); 

Der Ausgang wird wie folgt aus:

import java.util.ArrayList; 

public class StudentWrapper { 
    private ArrayList<Studente> studente; 

    public StudentWrapper() { 
    studente = new ArrayList<Studente>(); 
    } 

    public void addStudent(Studente s){ 
    studente.add(s); 
    } 
} 

-Code zu JSON zu konvertieren. So wie du es willst.

ToJSON {"studente":[{"nome":"Jhon","cognome":"Doe","matricola":"0512","dataNascita":"14/10/1991"}]} 
2

Die Json, die Sie versuchen zu erreichen, ist nicht das Repräsentat Bei einem einzelnen Studente-Objekt handelt es sich um die Darstellung eines Objekts mit einer Liste von Studente-Objekten, die einen einzigen Eintrag enthält.

So müßten Sie, dass zusätzliches Objekt erstellen, die eine Liste von Studente Objekten enthält, fügen Sie die eine Instanz auf die Liste, und serialisiert dann das Objekt mit der Liste.

Es gibt jedoch ein kleines Problem. Sie fordern im Wesentlichen, dass die Liste des Wrapperobjekts einen Eigenschaftsnamen hat, der mit einem Großbuchstaben beginnt. Dies ist möglich, bricht jedoch die Java-Codierungskonventionen.