0

我曾尝试在另一个项目中执行此操作,根据我看过的教程,我知道我走在正确的轨道上,但我无法正确解析:

(非常简化)JSON 输出:

{
"data":{
  "info":{
      "username": "something"
      "email" : "something"
   }
..
..

}

我正在尝试使用以下类获取“用户名”和“电子邮件:

class ProfileResponse {
static Data data;

public static Data getData() {
    return data;
}

public static void setData(Data data) {
    ProfileResponse.data = data;
}

}

Class Data {
@SerializedName("info")
static Info info;

public static Info getInfo() {
    return info;
}

public static void setInfo(Info info) {
    Data.info = info;
}

}

class Info {
@SerializedName("username")
static String username;
@SerializedName("email")
static String email;

public static String getUsername() {
    return username;
}

public static String getEmail() {
    return email;
}

}

和反序列化 JSON 字符串(它是一个字符串可能是个问题吗?),如下所示:

           Gson gson = new Gson();
                        gson.fromJson(response, ProfileResponse.class);
                        if (Info.getUsername() == null
                                || Info.getUsername().isEmpty()) {
                            System.out.println("NO USERNAME");
                        } else {
                            System.out.println("USERNAME: "
                                    + Info.getUsername());
                        }

每次运行时都会打印“NO USERNAME”。

4

1 回答 1

0

static默认情况下,字段从序列化/反序列化中排除。

从您的类(字段和方法)中删除所有static关键字,fromJson()正确调用,然后您将获得您正在寻找的结果。

Gson 从您的 JSON 实例化您的类的实例。修改类后,您将执行以下操作:

ProfileResponse pr = gson.fromJson(response, ProfileResponse.class); 
于 2013-01-01T23:03:17.907 回答