先引入json2.js类库,详见https://github.com/douglascrockford/JSON-js
两个比较重要的方法:
1. 将Object转化为String
var str = JSON.stringify(obj);
2. 将String转化为Object
var obj = JSON.parse(str);
进入正文 : )
先将要存储json数据,写下来,方便在用代码结构时参考
{
"pages" : [
{
"url" : "http://h5.m.xxxxxx.com/trip/flight/search/index.html", //页面的url
"data" : [
{
"time" : "17:35:48",
"aplusData" : "Page_Flight"
},
{
"time" : "17:35:54",
"aplusData" : "Button_Flight_Calendar"
},
{
"time" : "17:36:02",
"aplusData" : "Button_Flight_SearchFlight"
}
]
},
{
"url" : "http://h5.m.xxxxxx.com/trip/flight/searchlist/index.html", //页面的url
"data" : [
{
"time" : "17:35:48",
"aplusData" : "Page_Flight"
}
]
}
]
}
数据存储的逻辑是
1. 如果url已存在,则将新的数据,push到data数组里
2. 如果url不存在,刚新建一个对象obj,将新的数据,push到obj.data数据里
方法如下:
function _saveLog(pageUrl, data){
var storage = window.localStorage;
// var log = _getDate() + ' ' + data + '||' + pageUrl;
if(!storage.getItem('xxxxxx')){
var aplusLog = _handleJSON(pageUrl, _getDate(), data, null);
}else{
var existLog = storage.getItem('xxxxxx');
// storage.setItem('xxxxxx', existLog + '::' + log);
var aplusLog = _handleJSON(pageUrl, _getDate(), data, existLog);
}
storage.setItem('xxxxxx', aplusLog);
console.log('localStorage->' + storage.getItem('xxxxxx'));
}
// 把新增的埋点数据,加入到obj里,存储在localStoage中
function _handleJSON(pageUrl, time, data, objStr){
var dataStr = '';
// localstorage中已有埋点数据,向JSON object中插入新数据
if(objStr){
var obj = JSON.parse(objStr);
var pagesItemArr = obj.pages;
// 该页面下,已有埋点数据,更新
for(var i = 0; i < pagesItemArr.length; i++){
if(pageUrl == pagesItemArr[i].url){
pagesItemArr[i].data.push({
"time" : time,
"aplusData" : data
});
obj.pages = pagesItemArr;
dataStr = JSON.stringify(obj);
return dataStr;
}
}
// 该页面下,没有埋点数据,新建
var pagesItem = {};
pagesItem.url = pageUrl;
pagesItem.data = [];
var dataItem = {};
dataItem.time = time;
dataItem.aplusData = data;
pagesItem.data.push(dataItem);
pagesItemArr.push(pagesItem);
// 将数据更新到obj中,转化成string,存储到localstorage中
obj.pages = pagesItemArr;
dataStr = JSON.stringify(obj);
}else{
// localstorage中没有埋点数据,新建一个JSON object
var obj = {};
obj.pages = [];
var pagesItem = {};
pagesItem.url = pageUrl;
pagesItem.data = [];
var dataItem = {};
dataItem.time = time;
dataItem.aplusData = data;
pagesItem.data.push(dataItem);
obj.pages.push(pagesItem);
console.log(obj);
dataStr = JSON.stringify(obj);
}
return dataStr;
}