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;
        }

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

     

  • 相关阅读:
    java笔试之数字颠倒
    java笔试之取近似值
    java笔试之求int型正整数在内存中存储时1的个数
    js日期格式化Date
    【算法导论C++代码】归并排序
    Unity3D 错误nativeVideoFrameCallback的解决方法
    Unity3D脚本(MonoBehaviour)生命周期分析
    Unity3D 移动MM failed to find resource file{mmiap.xml}解
    Unity3D C#打开外部应用程序,并检测应用程序是否关闭退出
    Unity3d脚本执行顺序详解
  • 原文地址:https://www.cnblogs.com/30go/p/5719208.html
Copyright © 2011-2022 走看看