繁体   English   中英

将来自JSON响应的数组字符串存储在领域中

[英]Store string of array from json response in realm

这是我需要存储在领域中的JSON响应。

{
  "account": {
    "_id": "xx123",
    "user_id": "abc999",
    "accounts": [
      {
        "email": "random12@gmail.com",
        "email_platform": [
          "email"
        ]
      }
    ]
  }
}

由于我们无法存储List<String>我使用此示例为字符串值创建了一个自定义类,但它给了我以下错误

java.lang.IllegalStateException: Expected BEGIN_OBJECT but was STRING at line 1 column 199 path $.data.account.accounts[0].email_platform[0]:

public class StringClassEmail  extends RealmObject{
    private String emailVal;

    public StringClassEmail() {
    }

    public StringClassEmail(String emailVal) {
        this.emailVal = emailVal;
   }

}

如果需要的话,这里也是accounst班

public class UserAccountList extends RealmObject {
   @SerializedName("email")
   @Expose
   private String email;

    @SerializedName("email_platform")
    @Expose
    private RealmList<StringClassEmail> emailPlatform;


   //getter and setter

}

首先,您应该使用jsonschema2pojo生成DTO

    -----------------------------------com.example.Account.java-----------------------------------

            package com.example;

import java.util.List;
import com.google.gson.annotations.Expose;
import com.google.gson.annotations.SerializedName;

    public class AccountDTO {

        @SerializedName("_id")
        @Expose
        private String id;
        @SerializedName("user_id")
        @Expose
        private String userId;
        @SerializedName("accounts")
        @Expose
        private List<EmailDTO> emails = null;

        public String getId() {
            return id;
        }

        public void setId(String id) {
            this.id = id;
        }

        public String getUserId() {
            return userId;
        }

        public void setUserId(String userId) {
            this.userId = userId;
        }

        public List<EmailDTO> getEmails() {
            return emails;
        }

        public void setAccounts(List<EmailDTO> emails) {
            this.emails = emails;
        }
    }

-----------------------------------com.example.Account_.java-----------------------------------

            package com.example;

import java.util.List;
import com.google.gson.annotations.Expose;
import com.google.gson.annotations.SerializedName;

    public class EmailDTO {

        @SerializedName("email")
        @Expose
        private String email;
        @SerializedName("email_platform")
        @Expose
        private List<String> emailPlatform = null;

        public String getEmail() {
            return email;
        }

        public void setEmail(String email) {
            this.email = email;
        }

        public List<String> getEmailPlatform() {
            return emailPlatform;
        }

        public void setEmailPlatform(List<String> emailPlatform) {
            this.emailPlatform = emailPlatform;
        }

    }
-----------------------------------com.example.Response.java-----------------------------------

            package com.example;

import com.google.gson.annotations.Expose;
import com.google.gson.annotations.SerializedName;

    public class Response {
        @SerializedName("account")
        @Expose
        private AccountDTO account;

        public AccountDTO getAccount() {
            return account;
        }

        public void setAccount(AccountDTO account) {
            this.account = account;
        }
    }


然后也定义RealmObject类

public class Account extends RealmObject {
    @PrimaryKey
    private String id;

    @Index
    private String userId;

    private User user;

    private RealmList<Email> emails = null;
}

public class Email extends RealmObject {
   @Index
   private String email;

   private RealmList<EmailPlatform> emailPlatform;
}

public class EmailPlatform extends RealmObject {
    @Index
    private String platform;

    private Email email;
}

然后使用GSON解析JSON,然后将其映射到Realm的架构,然后将其插入db。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM