2019-nCov疫情实时趋势数据可视化Echarts学习(2):获取API数据接口后数据的清洗、处理及JSON标准格式的输出

简介: 2019-nCov疫情实时趋势数据可视化Echarts学习(2):获取API数据接口后数据的清洗、处理及JSON标准格式的输出

首先感谢Vam的金豆之路提供《【免费开源】2020年独家全球疫情大数据接口(实时获取)》,见https://blog.csdn.net/qq_39045645/article/details/104227764


项目需求描述:

1.获取API后数据分析,是否可以直接调用?答案:否。

2.数据是否需要清洗?答案:是。

3.如何清洗获取的API数据?答案:如下。


首先JSON概念的的明确:


JSON 名称/值对

JSON 数据的书写格式是:名称/值对。名称/值对包括字段名称(在双引号中),后面写一个冒号,然后是值:

"name" : "菜鸟教程"


JSON 对象

JSON 对象在大括号({})中书写,对象可以包含多个名称/值对:

{ "name":"菜鸟教程" , "url":"www.runoob.com" }


JSON 数组

JSON 数组在中括号中书写,数组可包含多个对象:

{ "sites": [ { "name":"菜鸟教程" , "url":"www.runoob.com" }, { "name":"google" , "url":"www.google.com" }, { "name":"微博" , "url":"www.weibo.com" } ] }


实际情况,我们都是在处理JSON数组,如果不是按照JSON标准格式来处理数据,会出现众多问题。这也是明确JSON概念的重要原因。


进入正文,下面是API数据处理的分解步骤:

一、用ajax获取数据源,并通过console.log查看数据:

    //使用$.get(),必须http服务器支持,无法本地访问;
    $.get('https://www.maomin.club/fy/get/', function (res, status) {
        /*1.读取数据,查看数据格式,按照需求进行数据清洗处理;*/
        console.log(res);
    })



为了提高效率,建议复制(copy)到自己熟悉的IDE中进行数据查看:



二、查看可知道,这是一组非标准的JSON数据,无法直接输出和调用,主要的问题集中在头部和尾部有描述性的代码。

头部代码:

var V = V || {};V.activity_name = "newpneumonia";V.page_name = "newpneumonia";V.template_name = "empty";V.page_id = "458";V.activity_id = "134";V.activity_id_list = ['134'];V.conf = 

尾部代码:

;V.bsData = {"os": "android", "app": null, "appversion": null, "browser": "", "userInfo": {"isLogin": false}};V.extData = {"pvid": "1581823641475608395", "rqid": "1581823641475608395", "qid": "1581823641475608395", "psid": "0", "sid": "0", "baiduid": "ANONYMOUS", "fr": "self", "oq": "-", "q": "-", "cat": "newpneumonia_newpneumonia", "pid": 385};V.currentTime = 1581823641;V.bundles = window.MOLA_BUNDLED_COMPONENTS || [];V.bundles = V.bundles.map(function (bundle) {return bundle.replace(/\.js$/, '');});require(['activity/captain/index'].concat(V.bundles), function (index) {index.enter();});

需要将这两部分,进行替换为空。解决方案:获取头部对应结尾的关键字符串,尾部对应的头部关键字符串,通过indexOf函数获取对应的字符串位置。

        //2.数据清洗,标题头处理,转换成标准的json格式;
        var index1 = res.indexOf('{"page"');//头部数据,找到指定字符串的位置;
        var index2 = res.indexOf(';V.bsData');//尾部数据,找到指定字符串的位置;
        console.log(index1);
        console.log(index2);
    })



三、对字符串利用substring函数进行替换:

        /*3.截取需要的字符串*/
        var data = res.substring(index1, index2);
        console.log(data);


 


四、标准数据输出

        /*4.标准数据输出*/
        var dataObj = eval("(" + data + ")");//设置json类型,解决返回undefined的问题
        console.log(dataObj.component[0]);



完整的代码:

    //使用$.get(),必须http服务器支持,无法本地访问;
    $.get('https://www.maomin.club/fy/get/', function (res, status) {
        /*1.读取数据,查看数据格式,按照需求进行数据清洗处理;*/
        //console.log(res);
        //2.数据清洗,标题头处理,转换成标准的json格式;
        var index1 = res.indexOf('{"page"');//头部数据,找到指定字符串的位置;
        var index2 = res.indexOf(';V.bsData');//尾部数据,找到指定字符串的位置;
        //console.log(index1);
       // console.log(index2);
        /*3.截取需要的字符串*/
        var data = res.substring(index1, index2);
       // console.log(data);
        /*4.标准数据输出*/
        var dataObj = eval("(" + data + ")");//设置json类型,解决返回undefined的问题
        console.log(dataObj.component[0]);
    })


接下来,讲述如何利用获取的数据进行echarts的数据可视化展示。

Done!

相关文章
|
3月前
|
前端开发 算法 数据可视化
怎么在echarts图上左右滑动切换数据区间
怎么在echarts图上左右滑动切换数据区间
62 0
|
3月前
|
数据可视化
echarts图表坐标轴数据标签添加下划线
echarts图表坐标轴数据标签添加下划线
61 0
|
3月前
|
前端开发 JavaScript BI
Django教程第5章 | Web开发实战-数据统计图表(echarts、highchart)
使用echarts和highcharts图表库实现折线图、柱状图、饼图和数据集图
68 2
|
3月前
|
数据可视化 JavaScript 前端开发
基于Echarts构建停车场数据可视化大屏
基于Echarts构建停车场数据可视化大屏
85 0
|
15天前
|
新零售 分布式计算 数据可视化
数据分享|基于Python、Hadoop零售交易数据的Spark数据处理与Echarts可视化分析
数据分享|基于Python、Hadoop零售交易数据的Spark数据处理与Echarts可视化分析
|
3月前
|
存储 数据可视化 JavaScript
基于Echarts构建大数据招聘岗位数据可视化大屏
基于Echarts构建大数据招聘岗位数据可视化大屏
84 0
|
4月前
|
JavaScript 数据可视化 前端开发
Vue整合HighCharts和ECharts实现数据可视化
Vue整合HighCharts和ECharts实现数据可视化
27 0
|
4月前
|
数据可视化 前端开发 JavaScript
react+datav+echarts实现可视化数据大屏
最近有点闲,就学习了下react,没想到就把react学完了,觉得还不错,就打算出一把react+datav的简易版可视化数据大屏供大家做个参考
174 2
react+datav+echarts实现可视化数据大屏
|
JSON API 数据格式
API json多层数据实体类封装(利用泛型技术)
版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/qingfeng812/article/details/51199835 ...
1294 0
|
22小时前
|
安全 API 开发者
智能体-Agent能力升级!新增Assistant API & Tools API服务接口
ModelScope-Agent是一个交互式创作空间,它支持LLM(Language Model)的扩展能力,例如工具调用(function calling)和知识检索(knowledge retrieval)。它已经对相关接口进行了开源,以提供更原子化的应用LLM能力。用户可以通过Modelscope-Agent上的不同代理(agent),结合自定义的LLM配置和消息,调用这些能力。