• 谈谈使用echarts过程中踩过的坑


    小结:

    1. 使用jquery获取json对象遇到的问题

        由于自己对ajax用的还不熟练,之前都是拷贝别人的代码拿来用的,这次自己写的时候倒是碰到好多麻烦一一列举如下:

        1.1 在$ 与ajax之间还需要有个点号,即 $.ajax({...... });

        1.2 在返回值那里对于返回类型是text或是json格式时,不知道哪种使用eval,哪种使用 (.属性)来解析,正确方式如下

             当返回类型是text时,使用eval解析,书写方式如下

    var obj = eval("(" + data + ")") ;
    var title = obj.title;

             当返回类型是json格式时,直接使用点号即可:

    var title = data.title;

    2. 在java程序中将对象转换为JSON格式遇到的问题

       2.1 使用以下的代码将对象转换为json格式时会出现空的属性值显示出来了。

    JSONObject json = JSONObject.fromObject(option);

       2.2 使用以下的代码将对象转换为json格式时空的属性值就不会显示了。但是即使这样也会产生3中的顺序个问题。

    String json = JSON.toJSONString(option);

    3. java中将对象转换为json字符串时排列顺序问题

        使用2.2的方法虽然转换的时候空的属性值不会出现了,但是排序顺序并不是按照对象加载的先后顺序来输出的。这个感觉比较奇怪。

        网上查询了下,由于json是使用HashMap容器的,所以是无序的。所以网上找到别人的类的解决方法来重写了json的toString方法。

        粘贴如下,供参考。

        public static String format(Object object) {
            Gson gson = new GsonBuilder().setPrettyPrinting().disableHtmlEscaping().create();
            JsonParser jp = new JsonParser();
            JsonElement je = jp.parse(gson.toJson(object));
            String prettyJsonString = gson.toJson(je);
            //简单处理function
            String[] lines = prettyJsonString.split("
    ");
            lines = replaceFunctionQuote(lines);
            StringBuilder stringBuilder = new StringBuilder();
            for (String line : lines) {
                stringBuilder.append(line);
            }
            return stringBuilder.toString();
        }
        /**
         * 处理字符串中的function和(function(){})(),除{}中的代码外,其他地方不允许有空格
         *
         * @param lines
         * @return
         */
        public static String[] replaceFunctionQuote(String[] lines) {
            boolean function = false;
            boolean immediately = false;
            for (int i = 0; i < lines.length; i++) {
                String line = lines[i].trim();
                if (!function && line.contains(""function")) {
                    function = true;
                    line = line.replaceAll(""function", "function");
                }
                if (function && line.contains("}"")) {
                    function = false;
                    line = line.replaceAll("\}"", "\}");
                }
    
                if (!immediately && line.contains(""(function")) {
                    immediately = true;
                    line = line.replaceAll(""\(function", "\(function");
                }
                if (immediately && line.contains("})()"")) {
                    immediately = false;
                    line = line.replaceAll("\}\)\(\)"", "\}\)\(\)");
                }
                lines[i] = line;
            }
            return lines;
        }

    最后可以看看最终出来的效果图如下:

     

  • 相关阅读:
    xftp无法用root账号登录问题
    jenkins上gradle打包
    jenkins登录后页面显示为空的问题
    sql 修改oracle数据库中某个字段的部分内容
    redis安装及报错处理
    Centos7 firewall-cmd not found
    ftp connect: No route to host 解决方案
    反向代理负载均衡之Apache
    centos7 openldap双主部署
    apache安装以及报错处理
  • 原文地址:https://www.cnblogs.com/30go/p/5719208.html
Copyright © 2020-2023  润新知