我在变量名中有一个带空格的JSON,如下所示:
{
"First Name":"John",
"Last Name":"Smith"
}
由于Java不允许变量名中的空格,我试图看看Gson是否有一个规定将其解析为 First_Name 或 FirstName 或类似的东西所以我可以使用 First_Name 或 FirstName 作为我的Java类中的变量名来表示这些数据。
有没有办法做或者我需要制作JSON的本地副本并通过JSON文件运行String解析器来重命名变量然后将其传递给Gson来完成剩下的工作?
有什么想法吗?
注意:此JSON由我使用的第三方API发送,而不是我自己创建的。因此,虽然我希望我可以告诉他们正确的命名约定,但这不是我想花时间的地方:)
答案 0 :(得分:1)
您是否尝试过使用字段命名支持?我的第一个猜测是它应该使用名称中的空格(https://sites.google.com/site/gson/gson-user-guide#TOC-JSON-Field-Naming-Support)。像下面的东西应该工作。
试过以下,它有效(我不同意命名,但它有效)
import com.google.gson.Gson;
public class SOMain {
public static void main(String[] args) throws Exception{
Gson gson = new Gson();
String json = "{\"First Name\":\"John\",\"Last Name\":\"Smith\"}";
Employee employee = gson.fromJson(json, Employee.class);
System.out.println(employee);
}
}
import com.google.gson.annotations.SerializedName;
public class Employee {
@SerializedName("Last Name")
public String lastName;
@SerializedName("First Name")
public String firstName;
public String getLastName() {
return lastName;
}
public void setLastName(String lastName) {
this.lastName = lastName;
}
public String getFirstName() {
return firstName;
}
public void setFirstName(String firstName) {
this.firstName = firstName;
}
@Override
public String toString() {
// TODO Auto-generated method stub
return "Employee with first name " + firstName + " and last name " + lastName ;
}
}
答案 1 :(得分:0)
首先,在您的java代码中为变量firstName
命名,请参阅Variable naming conventions in Java?
其次,用Gson更改字段名称:这是一个很棒的教程:http://www.javacreed.com/gson-annotations-example/