当我尝试将基本对象转换为json时,它似乎返回null我尝试过的所有内容。怎么了?
public class Person {
public String Name;
public String Address;
}
Person person = new Person() {
{
Name = "John";
Address = "London";
}
};
Gson gson = new Gson();
String jsonPerson = gson.toJson(person);
答案 0 :(得分:12)
查看由Sotirios Delimanolis链接的副本。请注意,您使用的双括号初始值设定项有效地创建了一个匿名子类,它有一些令人讨厌的副作用,比如每次使用它时创建新类,以及像Gson这样的东西。
如果您创建了这样的构造函数,它将起作用:
class Ideone
{
public class Person {
public String Name;
public String Address;
public Person(String Name, String Address) {
this.Name = Name;
this.Address = Address;
}
}
public static void main (String[] args) throws java.lang.Exception
{
Person person = new Person("John", "London");
// System.out.println(person.Name);
Gson gson = new Gson();
String jsonPerson = gson.toJson(person);
}
}
顺便说一句,你不应该用大写字母命名你的字段;以大写字母开头的课程和小写字母的字段。
Have a look at the Google Java Style Guide for a good reference on naming conventions
答案 1 :(得分:3)
实例化对象的方式会创建一个匿名类,因此您将丢失该类型。您可以使用TypeToken
来修复此问题,如下所示
Type personType = new TypeToken<Person>(){}.getType();
Gson gson = new Gson();
String jsonPerson = gson.toJson(person, personType);