2017-05-07 83 views
0

我在嘗試在JSON中轉換簡單的java對象。我使用谷歌GSON庫和它的作品,但我想在這個形式的完整的JSON對象:在JSON中轉換java對象

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

這是我的課:

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; 
    } 

} 

這是測試儀:

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); 

我有這在toJson:{"nome":"Jhon","cognome":"Doe","matricola":"0512","dataNascita":"14/10/1991"}

+0

你爲什麼認爲這是一個完整的JSON對象? –

+0

我還需要json字符串中類的名字 –

+0

@JunbangHuang不工作,json中沒有學生:[{「nome」:「Jhon」,「cognome」:「Doe」,「matricola」:「0512 「,」dataNascita「:」14/10/1991「}] –

回答

1

最好爲學生列表編寫一個包裝。像這樣:

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); 
    } 
} 

代碼轉換爲JSON:

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); 

輸出會是這樣。你想要的方式。

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

你試圖實現的Json不是代表只有一個Studente對象,它是包含Studente對象列表的對象的表示,它具有單個條目。

因此,您需要創建包含Studente對象列表的額外對象,將一個實例添加到列表中,然後序列化包含列表的對象。

雖然有一個小問題。你基本上要求包裝對象的列表有一個以大寫字母開頭的屬性名稱。這可以完成,但打破了Java編碼約定。