我正在使用Gson在json和java对象之间进行转换。
让我们说json是这样的:
{
"name": "John",
"age": 12,
"adult": false
}
json的类是:
public class Student {
@Expose
@SerializedName("name")
private String name;
private int age;
private boolean adult;
// setters for all fields above
public void setName(String name) {
this.name = name;
}
...
// getters for all fields above
public String getName() {
return name;
}
...
}
我的问题是:
是否所有在json中显示的字段都应该有@Expose注释?这是否也意味着我们可以拥有不属于json字符串的其他字段?
是否仅当json中的字段名称和java类中的变量名称不同时才需要使用@SerializedName注释,否则它是可选的?
字段的java类中是否需要 setter 函数?
答案 0 :(得分:0)
您的问题的简短答案是1.是,2。是,3。否。
Gson
有很多内容 - 你的学生班需要很少的工作才能完成它的工作:
您可以让更多数据成员不必与JSON中的键名匹配,当null
处理数据时,他们最终会设置为Gson
。只要变量名与JSON中的键名匹配,Gson
也不需要任何注释。如果您需要其他功能,则可以使用任何类型的setter方法(Gson
没有)。基本上,Gson
唯一要找的是匹配键的数据成员和getter方法。您的课程是否更复杂取决于您和您的应用程序需要什么。
修改:Gson
处理的所有值都属于String
类型。如果您有int
和boolean
类型,则需要将输入作为String
进行处理,并对其进行操作以将其转换为您要查找的内容。