【发布时间】:2015-12-14 17:09:11
【问题描述】:
我必须用 gson 解析一个 web 服务,该服务有一个有时与 JsonObject(即元素)相关联的键:
"elements": {
"sheets": 1,
"questions": 6
}
有时使用数组...
"elements": [
{
"_id": "51824208fbca3b0398c8374a",
"collection": "medias",
"name": "Document Powerpoint",
"customNameInModule": true
},
{....}
]
所以在包含此元素的模型中,我必须使用 JsonElement 键入它。
@SerializedName("elements")
@Expose
private JsonElement elements;
我的想法是这样构建我的访问器:
private List < Element > listElement;
public List < Element > getListElements() {
if (listElement == null) {
Type listType = (new TypeToken < List < Element >> () {}).getType();
listElement = (new Gson()).fromJson(elements.toString(), listType);
return listElement;
} else {
return listElement;
}
}
private ElementsObject objectElement;
public ElementsObject getObjectElement() {
if (objectElement == null) {
objectElement = (new Gson()).fromJson(elements.toString(), ElementsObject.class);
return objectElement;
} else {
return objectElement;
}
}
但现在我的模型不再是可序列化的..
java.lang.RuntimeException: Parcelable遇到IOException写 可序列化对象
我该怎么办?
谢谢,
【问题讨论】:
-
你需要对做这个网络服务的人大喊大叫,直到他们把它改成有意义的东西。
-
这个:stackoverflow.com/questions/14582440/…? (另外,当反序列化结束时,将 json 对象的实际内容保存到对象的字段中)
-
这是一个复杂的 javascript 客户端使用的 Web 服务,更改它的成本很高。但我同意你的观点,不幸的是我没有看到它开始
-
哦,我的不可序列化异常?
-
在我的代码中究竟什么是不可序列化的我完全不明白为什么不