带有变量名空格的JSON

时间:2016-08-27 07:03:57

标签: java parsing gson android

我在变量名中有一个带空格的JSON,如下所示:

{
     "First Name":"John",
     "Last Name":"Smith"
}

由于Java不允许变量名中的空格,我试图看看Gson是否有一个规定将其解析为 First_Name FirstName 或类似的东西所以我可以使用 First_Name FirstName 作为我的Java类中的变量名来表示这些数据。

有没有办法做或者我需要制作JSON的本地副本并通过JSON文件运行String解析器来重命名变量然后将其传递给Gson来完成剩下的工作?

有什么想法吗?

注意:此JSON由我使用的第三方API发送,而不是我自己创建的。因此,虽然我希望我可以告诉他们正确的命名约定,但这不是我想花时间的地方:)

2 个答案:

答案 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/