Quickblox:为什么并非所有QBUser字段都可序列化? (Android SDK)

时间:2014-03-07 09:53:48

标签: java android serialization sdk quickblox

我正在测试通过 Gson 将当前 QBUser 对象保存到共享首选项中,这意味着我想在本地保存所有 QBUser 字段以供日后使用使用。

我注意到某些字段被定义为可序列化而某些字段未定义。是否有一个原因?对于背景信息,我使用的排除模式仅包含定义了 SerializedName 注释的字段,并将其与类中的其他字段一起使用。

见打印输出:

// Compiled from QBUser.java (version 1.6 : 50.0, super bit)
public class com.quickblox.module.users.model.QBUser extends com.quickblox.core.model.QBEntity {

  // Field descriptor #63 Ljava/lang/String;
  @com.google.gson.annotations.SerializedName(value="full_name")
  protected java.lang.String fullName;

  // Field descriptor #63 Ljava/lang/String;
  protected java.lang.String email;

  // Field descriptor #63 Ljava/lang/String;
  protected java.lang.String login;

  // Field descriptor #63 Ljava/lang/String;
  protected java.lang.String phone;

  // Field descriptor #63 Ljava/lang/String;
  protected java.lang.String website;

  // Field descriptor #73 Ljava/util/Date;
  @com.google.gson.annotations.SerializedName(value="last_request_at")
  protected java.util.Date lastRequestAt;

  // Field descriptor #63 Ljava/lang/String;
  @com.google.gson.annotations.SerializedName(value="external_user_id")
  protected java.lang.String externalId;

  // Field descriptor #63 Ljava/lang/String;
  @com.google.gson.annotations.SerializedName(value="facebook_id")
  protected java.lang.String facebookId;

  // Field descriptor #63 Ljava/lang/String;
  @com.google.gson.annotations.SerializedName(value="twitter_id")
  protected java.lang.String twitterId;

  // Field descriptor #82 Ljava/lang/Integer;
  @com.google.gson.annotations.SerializedName(value="blob_id")
  protected java.lang.Integer blobId;

  // Field descriptor #63 Ljava/lang/String;
  @com.google.gson.annotations.SerializedName(value="user_tags")
  protected java.lang.String tags;

  // Field descriptor #63 Ljava/lang/String;
  protected java.lang.String password;

  // Field descriptor #63 Ljava/lang/String;
  protected java.lang.String oldPassword;

所以我们可以看到,例如 full_name 可以通过 Gson 保存得很好但例如登录 email_address 不是。

QB iOS SDK 相比, QBUser 类正在全面实现 NSCoding ,这使我可以很好地存储当前用户对象NSUserDefaults与Android的 SharedPreferences 相同。

如果这不是将用户本地存储到设备的正确方法,那么所有提示都表示赞赏! :)

0 个答案:

没有答案