【问题标题】:Dynamically build simply-typed java objects from JSON REST从 JSON REST 动态构建简单类型的 java 对象
【发布时间】: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 似乎会导致更多问题。

这样做的正确方法是什么?

【问题讨论】:

标签: java android json jackson retrofit


【解决方案1】:

Insted Object o 你应该使用自定义类。所以使用new Callback&lt;MyMapper&gt; 而不是新的Callback&lt;Object&gt;

例如

public class MyMapper {
    public String name; 
    public int age; 
}

【讨论】:

    猜你喜欢
    • 2019-10-20
    • 2014-05-31
    • 1970-01-01
    • 2016-10-02
    • 1970-01-01
    • 2015-05-28
    • 2012-06-11
    • 2013-10-27
    • 2015-04-27
    相关资源
    最近更新 更多