V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX 提问指南
esolve
V2EX  ›  问与答

关于 jackson 的 ObjectMapper

  •  
  •   esolve · 2017-05-03 16:06:45 +08:00 · 1456 次点击
    这是一个创建于 2763 天前的主题,其中的信息可能已经有所发展或是发生改变。

    下面代码中 变量 s 是一个 List<LinkedHashMap<String, Object>>类型 但是用 ObjectMapper 的时候

    s = mapper.readValue(json, List.class);

    只提供了一维上的类型,即 List.class 而不知道二维的类型,即 LinkedHashMap<String, Object> 而后是用

    LinkedHashMap<String, Object> link = s.get(i);

    得到 link

    可是这种 implicit 的转换是怎么个机制? 是 ObjectMapper 的魔力,悄悄的已经转换好了?

    public static void main(String[] args) {
        ObjectMapper mapper = new ObjectMapper();
        String json = "[{\"uid\":1000,\"uname\":\"xiao liao\",\"upwd\":\"123\",\"number\":12.0,\"isstudent\":true},{\"uid\":200,\"uname\":\"xiao mi\",\"upwd\":null,\"number\":0.0,\"isstudent\":false}]";
        List<LinkedHashMap<String, Object>> s = null;
        try {
            s = mapper.readValue(json, List.class);
        } catch (IOException e) {
            e.printStackTrace();
        }
        for (int i = 0; i < s.size(); i++) {
            LinkedHashMap<String, Object> link = s.get(i);
            Set<String> key = link.keySet();
            for (Iterator iterator = key.iterator(); iterator.hasNext(); ) {
                String string = (String) iterator.next();
                System.out.println(string + "==>" + link.get(string));
    
            }
            System.out.println("json:" + i + "" + s.get(i).toString());
        }
    }
    
    2 条回复    2017-05-04 11:52:33 +08:00
    tsunli
        1
    tsunli  
       2017-05-03 16:39:26 +08:00
    mapper.readValue(json,new TypeReference<List<List<String,String>> (){});
    esolve
        2
    esolve  
    OP
       2017-05-04 11:52:33 +08:00
    @tsunli 但是上面用不是你说的这个方法,而是

    readValue(String content, Class<T> valueType)
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   5946 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 43ms · UTC 02:09 · PVG 10:09 · LAX 18:09 · JFK 21:09
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.