【发布时间】:2015-03-22 05:23:45
【问题描述】:
我正在使用 Retrofit 使用 REST API。我可以接收 JSON 对象并打印它。我想将其动态转换为嵌套的简单类型 Java 对象。
即我希望 Java 对象包含基于 JSON 对象动态构建的嵌套 Map、Array、String、Int/Double、Boolean 和 null(类似于 Python 中的 json.loads)。我正在尝试为此使用杰克逊。这是我所拥有的:
API api = APIHandler.getApiInterface();
api.getFoo(new Callback<Object>() {
@Override
public void success(Object o, Response response) {
Log.i("Tag", "Print JSON " + o.toString());
ObjectMapper mapper = new ObjectMapper();
Map<String, Object> json = mapper.readValue(o, Map.class);
}
@Override
public void failure(RetrofitError error) {
}
});
记录了 JSON,但 mapper.readValue(o, Map.class); 行给出了“无法解析方法”错误。将返回类型更改为 String 似乎会导致更多问题。
这样做的正确方法是什么?
【问题讨论】:
-
当android有一个核心API来做这件事时,你为什么要使用jackson?看看developer.android.com/reference/org/json/…
-
感谢您的提示。 JSONObject 接近我正在寻找的东西,但看起来很笨重。我开始认为在 Java 中,我真的应该将 JSON 转换为 POJO,不是吗?
标签: java android json jackson retrofit