首先感谢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);
    })

2019-nCov疫情实时趋势数据可视化Echarts学习(2):获取API数据接口后数据的清洗、处理及JSON标准格式的输出_字符串
为了提高效率,建议复制(copy)到自己熟悉的IDE中进行数据查看:
2019-nCov疫情实时趋势数据可视化Echarts学习(2):获取API数据接口后数据的清洗、处理及JSON标准格式的输出_json_02
二、查看可知道,这是一组非标准的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);
    })

2019-nCov疫情实时趋势数据可视化Echarts学习(2):获取API数据接口后数据的清洗、处理及JSON标准格式的输出_json_03
三、对字符串利用substring函数进行替换:

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

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

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

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

    //使用$.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!