Java 在域中存储json响应中的数组字符串
这是我需要存储在领域中的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" ] } ] } } 由于我们不能存储列表,我使用创建了一个用于字符串值的自
{
"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;
}