Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/387.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/json/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在JSON中转换java对象_Java_Json - Fatal编程技术网

在JSON中转换java对象

在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

我正在尝试用JSON转换一个简单的java对象。我正在使用google Gson库,它可以正常工作,但我想要一个完整的JSON对象,格式如下:

{"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的列表。