zoukankan      html  css  js  c++  java
  • 谈谈使用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;
        }

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

     

  • 相关阅读:
    在纪念中国人民抗日战争暨世界反法西斯战争胜利70周年大会上的讲话
    ConcurrentHashMap 的实现原理
    聊聊并发(四)——深入分析ConcurrentHashMap
    Mybatis 动态 SQL
    Mybatis Mapper XML 文件
    MySQL的语句执行顺序
    Java 集合细节(二):asList 的缺陷
    java中 列表,集合,数组之间的转换
    将java中数组转换为ArrayList的方法实例(包括ArrayList转数组)
    把Java数组转换为List时的注意事项
  • 原文地址:https://www.cnblogs.com/30go/p/5719208.html
Copyright © 2011-2022 走看看