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

时间:2024-04-19 10:31:34

小结:

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过程中踩过的坑