java - 使用 gson 反序列化内部类返回 null

标签 java json gson

我想使用 Gson 将 JSON 反序列化为对象。 我已经定义了适当的类,其中一些类的对象包含在其他对象中。 当尝试反序列化整个 JSON 时,我得到了 null 值,因此我开始将其分解。

我达到了所有较低类都站在自己一边的地步,但是当尝试反序列化为包含该较小对象实例的对象时 - 所有东西都返回为 null。

我的部分 JSON:

{
  "user_profile": {
    "pk": 1,
    "model": "vcb.userprofile",
    "fields": {
      "photo": "images/users/Screen_Shot_2013-03-18_at_5.24.13_PM.png",
      "facebook_url": "https://google.com/facebook",
      "site_name": "simple food",
      "user": {
        "pk": 1,
        "model": "auth.user",
        "fields": {
          "first_name": "blue",
          "last_name": "bla"
        }
      },
      "site_url": "https://google.com/"
    }
  }
}

用户配置文件类:

public class UserProfile {
    private int pk;
    private String model;
    private UPfields fields = new UPfields();//i tried with and without the "new"
}

UPfields 类:

public class UPfields {
    private String photo;
    private String facebook_url;
    private String site_name;
    private User user;
    private String site_url;
}

用户类别:

public class User {
    private int pk;
    private String model;
    private Ufields fields;
}

Ufields 级:

public class Ufields {
    private String first_name;
    private String last_name;
}

在我的主要部分中,我调用:

Gson gson = new Gson();
UserProfile temp = gson.fromJson(json, UserProfile.class);

所以我的临时对象仅包含空值。 我尝试将类更改为静态,但它不起作用。 UPfields 对象和所有较低的对象都工作正常。

有什么建议吗?

当我删除

"{
  "user_profile":"

并且它是右括号,反序列化为 user_profile 对象可以工作。

最佳答案

为了解析这个 json 示例,您必须创建辅助类,该类将包含 UserProfile 类型的名为 user_profile 的字段:

public class UserProfileWrapper {
    private UserProfile user_profile;
}

并使用此类解析此 json 字符串:

UserProfileWrapper temp = gson.fromJson(json, UserProfileWrapper.class);

关于java - 使用 gson 反序列化内部类返回 null,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17676802/

相关文章:

java - 不区分大小写的匹配方法

java - 用于组合多个序列的正则表达式

java - 选项卡 Pane 中的自定义组件不可交互

javascript - 使用 Parse.com 进行 Bootstrap Typeahead

json - GSON反序列化问题

java - 我将如何使用系统剪贴板从 java 中粘贴?

javascript - 如果 fetch 中 boolean 为 false 如何跳过 next .then() ?

java - 当 JSON 没有 "Name attribute"时如何使用 GSON ?

java - 使用 Google Gson 映射 Mongo id 字段

Javascript:使用动态变量名称访问 JSON 数据中的嵌套值