在JSON中转换java对象
我正在尝试用JSON转换一个简单的java对象。我正在使用google Gson库,它可以正常工作,但我想要一个完整的JSON对象,格式如下:在JSON中转换java对象,java,json,Java,Json,我正在尝试用JSON转换一个简单的java对象。我正在使用google Gson库,它可以正常工作,但我想要一个完整的JSON对象,格式如下: {"Studente":[{ "nome":"John", "cognome":"Doe","matricola":"0512","dataNascita":"14/10/1991"}]} 这是我的班级: public class Studente { private String nome; private String cogn
{"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”}
您试图实现的Json不是单个Studente对象的表示,而是包含Studente对象列表的对象的表示,它有一个条目
因此,您需要创建包含Studente对象列表的额外对象,将一个实例添加到列表中,然后序列化包含该列表的对象
不过,有一个小问题。实际上,您要求包装器对象的列表具有以大写字母开头的属性名称。这是可以做到的,但打破了Java编码惯例。您试图实现的Json不是单个Studente对象的表示,而是包含Studente对象列表的对象的表示,该列表只有一个条目 因此,您需要创建包含Studente对象列表的额外对象,将一个实例添加到列表中,然后序列化包含该列表的对象
不过,有一个小问题。实际上,您要求包装器对象的列表具有以大写字母开头的属性名称。这是可以做到的,但打破了Java编码惯例。最好为学生列表编写一个包装器。像这样:
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);
}
}
输出将如下所示。你想要的方式
ToJSON {"studente":[{"nome":"Jhon","cognome":"Doe","matricola":"0512","dataNascita":"14/10/1991"}]}
最好为学生列表写一个包装。像这样:
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);
}
}
输出将如下所示。你想要的方式
ToJSON {"studente":[{"nome":"Jhon","cognome":"Doe","matricola":"0512","dataNascita":"14/10/1991"}]}
为什么您认为这是一个完整的JSON对象?我还需要JSON中类的名称string@JunbangHuang不行,json中没有studente:[{“nome”:“Jhon”,“cognome”:“Doe”,“matricola”:“0512”,“dataNascita”:“14/10/1991”}]对不起,不是列表,而是地图。将
x
放入一个映射中,键是“Student”,值是一个包含x的列表。为什么您认为这是一个完整的JSON对象?我还需要JSON中类的名称string@JunbangHuang不行,json中没有studente:[{“nome”:“Jhon”,“cognome”:“Doe”,“matricola”:“0512”,“dataNascita”:“14/10/1991”}]对不起,不是列表,而是地图。将x
放入地图,键为“Student”,值为包含x的列表。