谈谈使用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("\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过程中踩过的坑的更多相关文章
- 使用ffmpeg视频编码过程中踩的一个坑
今天说说使用ffmpeg在写视频编码程序中踩的一个坑,这个坑让我花了好多时间,回头想想,非常多时候一旦思维定势真的挺难突破的.以下是不对的编码结果: ...
- spring-data-redis 使用过程中踩过的坑
spring-data-redis简介 Spring-data-redis是spring大家族的一部分,提供了在srping应用中通过简单的配置访问redis服务,对reids底层开发包(Jedis, ...
- NetCore部署到Linux服务器+Supervisor的步骤及过程中踩过的坑
本文作备忘使用 服务器配置: 下面是所有操作的具体步骤: 1.安装nginx 参考 1.1 添加源:默认情况Centos7中没有Nginx源,最近Nginx官网提供了Centos的源地址. sud ...
- 【spring】使用spring过程中踩到的坑
这里简单记录一下,学习spring的时候碰过的异常: 异常:org.springframework.beans.factory.BeanDefinitionStoreException: Unexpe ...
- 《Python3 网络爬虫开发实战》开发环境配置过程中踩过的坑
<Python3 网络爬虫开发实战>学习资料:https://www.cnblogs.com/waiwai14/p/11698175.html 如何从墙内下载Android Studio: ...
- Hive使用过程中踩过的坑
hive启动时错误1 Cannot execute statement:impossible to write to binary long since BINLOG_FORMAT = STATEME ...
- kafka 并发数配置过程中踩到的坑 InstanceAlreadyExistsException
] WARN org.apache.kafka.common.utils.AppInfoParser- Error registering AppInfo mbean javax.management ...
- 项目中踩过的坑之-sessionStorage
总想写点什么,却不知道从何写起,那就从项目中踩过的坑开始吧,希望能给可能碰到相同问题的小伙伴一点帮助. 项目情景: 有一个id,要求通过当前网页打开一个新页面(不是当前页面),并把id传给打开的新页面 ...
- ng-zorro-antd中踩过的坑
ng-zorro-antd中踩过的坑 前端项目中,我们经常会使用阿里开源的组件库:ant-design,其提供的组件已经足以满足多数的需求,拿来就能直接用,十分方便,当然了,有些公司会对组件库进行二次 ...
随机推荐
- jpa和hibernate注解
http://www.objectdb.com/api/java/jpa/JoinColumns 用hibernate和jpa annotation 大概一年多了,今天闲来无事,对他们关联关系元数据写 ...
- git实习笔记
一.查找文件目录 二.添加上传文件 三.提交文件,描述信息 四.登录
- 计算机图形学 - 图形变换(opengl版)
作业题目: 图形变换:实现一个图形绕任意直线旋转的程序. 要求:把一个三维图形绕任意一条直线旋转,需要有初始图形,和旋转后的图形,最好也可以实时控制旋转. 最少要做出绕z轴旋转. 原理:http:// ...
- 实战mysql分区(PARTITION)
http://lobert.iteye.com/blog/1955841 前些天拿到一个表,将近有4000w数据,没有任何索引,主键.(建这表的绝对是个人才) 这是一个日志表,记录了游戏中物品的产出与 ...
- CSS3系列一(概述、选择器、使用选择器插入内容)
CSS3模块化结构 CSS历史发展 CSS(Cascading Style Sheet),层叠样式表,是用于控制网页样式并允许将样式信息与网页内容分离的一种标记性语言. CSS3属性选择器 E[att ...
- 公共事件处理函数js库
var EventUtil = { /* *添加事件处理 参数:元素对象 事件类型 处理函数 */ addHandle: function (element, type, handle) { //do ...
- String.format()用法
package junit.test; import java.util.Date; import java.util.Locale; import org.junit.Test; pub ...
- cobbler工作流分析
官网 http://cobbler.github.io/ 介绍 Cobbler是一个快速网络安装linux的服务,而且在经过调整也可以支持网络安装windows.该工具使用python开发,小巧轻便, ...
- android语音识别和合成第三方 .
讯飞语音云 http://open.voicecloud.cn/index.php 目前支持6大类型的SDK下载,包括Android. iPhone平台移动应用的接入,Windows.Linux平台P ...
- quartz_jobs.xml标准配置
<?xml version="1.0" encoding="UTF-8"?><job-scheduling-data xmlns=" ...