我正在开发一款Android应用,我将使用Jackson Annotation API对JSON进行反序列化。
在我尝试包含AndroidActive ORM之前,它确实运行良好,这需要您的POJO继承Model类(https://github.com/pardom/ActiveAndroid/blob/master/src/com/activeandroid/Model.java)。
我的JSON在asyncTask中被反序列化:
Reader reader = new InputStreamReader(url.openStream());
try {
ObjectMapper mapper = new ObjectMapper();
mapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false);
rootJsonObj = mapper.readValue(reader, MyPojo.class);
} catch (JsonGenerationException e) {
e.printStackTrace();
}
快速浏览一下我的pogo:
@Table(name = "RootRecipes") //AndroidActive annotation
public class RootRecipes extends Model {
@JsonProperty("deleted") //Jackson annotation
@Column(name = "deleted") //AndroidActive annotation
public ArrayList<Number> deleted;
@JsonProperty("meta")
@Column(name = "meta")
public Meta meta;
@JsonProperty("objects")
@Column(name = "objects")
public ArrayList<Objects> objects;
json非常大于2mo但结构如下:
{"deleted": [107981, 107982, 107995, 107999, 108012, 108014],
"meta": {"is_anonymous": true, "latest": 1405555349, "limit": 1000, "next": null, "offset": 0, "page": 1, "pages": 1, "previous": null, "total_count": 20},
"objects": [<more objects>]}
给我的错误是:
com.fasterxml.jackson.databind.JsonMappingException: Instantiation of [simple type, class com.example.app.json.MyPojo] value failed: null
一旦我从Model中删除了继承,解析就会正常工作。 我无法弄清楚这个错误的原因。
感谢。
答案 0 :(得分:0)
在我看来,你应该创建新的POJO
类来处理与{@ 1}}分离的Android世界(我的意思是,他们不能拥有属性,来自Android软件包的父母)。它看起来像这样:
JSON
现在,您必须创建一个服务类,该服务类将能够解析class JsonRootRecipes {
@JsonProperty("deleted")
public List<Number> deleted;
@JsonProperty("meta")
public JsonMeta meta;
@JsonProperty("objects")
public List<Object> objects;
// getters, setters, toString
}
class JsonMeta {
@JsonProperty("is_anonymous")
private boolean anonymous;
// getters, setters, toString
}
// another POJOs decoupled from Android classes.
并将JSON
类转换为您的Android JsonPojo
类。伪代码:
POJO