Java 在域中存储json响应中的数组字符串

Java 在域中存储json响应中的数组字符串,java,android,realm,retrofit2,Java,Android,Realm,Retrofit2,这是我需要存储在领域中的JSON响应 { "account": { "_id": "xx123", "user_id": "abc999", "accounts": [ { "email": "random12@gmail.com", "email_platform": [ "email" ] } ] } } 由于我们不能存储列表,我使用创建了一个用于字符串值的自

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

{
  "account": {
    "_id": "xx123",
    "user_id": "abc999",
    "accounts": [
      {
        "email": "random12@gmail.com",
        "email_platform": [
          "email"
        ]
      }
    ]
  }
}
由于我们不能存储列表,我使用创建了一个用于字符串值的自定义类,但它给了我以下错误

java.lang.IllegalStateException:应为BEGIN_对象,但在第1行第199列路径$.data.account.accounts[0]处为字符串。电子邮件\u平台[0]:

}

如果需要,这里还有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。

显示完整的异常堆栈跟踪,并显示异常发生在代码中的哪一行。否,将其添加到问题中请确定,我明白了。问题是,您的电子邮件平台是字符串数组,而您正试图将其反序列化为字符串数组objects@VladMatvienko我对RealmDB不太熟悉,但尝试使用RealmList emailPlatform;而不是你的现实主义者。
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;
}