zoukankan      html  css  js  c++  java
  • JSONArray.toCollection 封装 bean 失败

    1. 问题描述:

       通过http请求服务端, 返回的bean的集合的字符串形式, 其中bean中的Date类型的属性值,形式为Long类型的表示形式(1466083519000);

       String responseStr = client.list(userid, from, to, s, max, -1);

      返回的 responseStr如下:


    [{"id":44,"content":"上海精神","createtime":1466083520000,"provider":"Apollo","receiver":"apollo","readingflag":1},{"id":45,"content":"上海精神","createtime":1466083520000,"provider":"Apollo","receiver":"apollo","readingflag":1},{"id":46,"content":"上海精神","createtime":1466083520000,"provider":"Apollo","receiver":"apollo","readingflag":1},{"id":47,"content":"上海精神","createtime":1466083520000,"provider":"Apollo","receiver":"apollo","readingflag":0},{"id":48,"content":"上海精神","createtime":1466083520000,"provider":"Apollo","receiver":"apollo","readingflag":0},{"id":49,"content":"上海精神","createtime":1466083520000,"provider":"Apollo","receiver":"apollo","readingflag":0},{"id":8,"content":"上海精神","createtime":1466083519000,"provider":"Apollo","receiver":"apollo","readingflag":1},{"id":9,"content":"上海精神","createtime":1466083519000,"provider":"Apollo","receiver":"apollo","readingflag":1},{"id":10,"content":"上海精神","createtime":1466083519000,"provider":"Apollo","receiver":"apollo","readingflag":1},{"id":13,"content":"上海精神","createtime":1466083519000,"provider":"Apollo","receiver":"apollo","readingflag":1}]

      此时通过JSONArray来转换,

      JSONArray jArray = JSONArray.fromObject(responseStr);

    接着通过Collection collection = JSONArray.toCollection(jArray, Message.class);来转出集合,

    问题出现了:

        集合 bean(Message)中的Date 类型 createtime值为系统当前时间, 而非正确的时间数据(1466083519000所对应的 yyyy-MM-dd类型数据)。

    2. 处理办法:

       对返回的responseStr数据运用正则表达式,替换long形式数据为日期格式形式。

      

         String regEx = "[0-9]{13}";
            Pattern pattern = Pattern.compile(regEx);
            Matcher matcher = pattern.matcher(responseStr);
            while(matcher.find()){
                String group = matcher.group();
                SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
                String format = sdf.format(new Date(Long.valueOf(group)));
                responseStr = responseStr.replace(group, format);
            }
    
            JSONArray jArray = JSONArray.fromObject(responseStr);
            List<Map> messageListPage = (List<Map>)JSONArray.toCollection(jArray, Map.class);
           

     再将List<Map> 返回前端 让js处理,前端返回类型 dataType : "json”, 返回List<Message> 和 返回 List<Map> 处理方式一样

  • 相关阅读:
    为什么要使用href=”javascript:void(0);”
    29zTree
    js获取下拉框的值
    C# 判断文件夹与文件是否存在
    C# 判断文件和文件夹是否存在并创建
    ASP.NET实现excel导入数据库
    同时向主表和从表里面导入execl数据 (asp.net webform)
    EasyUI数据分页实现(真假分页)
    easyui datagrid 前台分页的实现java采用的版本
    异步和多线程
  • 原文地址:https://www.cnblogs.com/rocky-fang/p/5718342.html
Copyright © 2011-2022 走看看