gpt4 book ai didi

android - 解析 Realm 中的 Integer 基本类型

转载 作者:搜寻专家 更新时间:2023-11-01 09:43:01 27 4
gpt4 key购买 nike

想在 Realm 中解析这个 JSON 响应,但它总是因类别而崩溃:

[
{
"id": 32,
"name": "ABC",
"height": "49.5000",
"categories": [
14,15,16
]
}
]

信息.java:

public class Info extends RealmObject {

@PrimaryKey
private Integer id;
private String name;
private Integer height;
private RealmList<RealmInt> categories;
}

RealmInt.java

public class RealmInt extends RealmObject{
private Integer val;

public RealmInt() {

}

public RealmInt(Integer val) {
this.val = val;
}

public Integer getVal() {
return val;
}
}

这是我收到此 JSON 时的解析方式:

String stringBody = response.body().string();
List<Info> newObjects = GsonIntWrapper.intBuilder().fromJson(stringBody, new TypeToken<List<Info>>(){}.getType());
Realm realm = Realm.getDefaultInstance();
realm.beginTransaction();
realm.copyToRealmOrUpdate(newObjects);

GsonIntWrapper.intBuilder()

公共(public)类 GsonIntWrapper {

public static Gson intBuilder(){
Type tokenInt = new TypeToken<RealmList<RealmInt>>(){}.getType();

Gson gson = new GsonBuilder()
.setExclusionStrategies(new ExclusionStrategy() {
@Override
public boolean shouldSkipField(FieldAttributes f) {
return f.getDeclaringClass().equals(RealmObject.class);
}

@Override
public boolean shouldSkipClass(Class<?> clazz) {
return false;
}
})
.registerTypeAdapter(tokenInt, new TypeAdapter<RealmList<RealmInt>>() {

@Override
public void write(JsonWriter out, RealmList<RealmInt> value) throws IOException {
// Ignore
}

@Override
public RealmList<RealmInt> read(JsonReader in) throws IOException {
RealmList<RealmInt> list = new RealmList<RealmInt>();
in.beginArray();
while (in.hasNext()) {
list.add(new RealmInt(in.nextInt()));
}
in.endArray();
return list;
}
})
.create();
return gson;
}
}

崩溃日志:

Caused by: java.lang.NumberFormatException: Expected an int but was 49.5000 at line 1 column 18581 path $[4].height

最佳答案

你的日志说明了一切,你的 json 上的变量“height”不是一个 int 像这样修改模型:

public class Info extends RealmObject {

@PrimaryKey
private Integer id;
private String name;
private Double height;
private RealmList<RealmInt> categories;
}

关于android - 解析 Realm 中的 Integer 基本类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39083288/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com