首页 > 其他 > 详细

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

时间:2016-07-29 18:55:57      阅读:180      评论:0      收藏:0      [点我收藏+]

 

小结:

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("\n");
        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;
    }

 

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

 技术分享

 

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

原文:http://www.cnblogs.com/30go/p/5719208.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!