埋点自动化-埋点日志对比

设计思想:

1.定义数据data(单个json,校验track_info外的字段在track_info都要存在)、data1_old(老版本上报的埋点)、
data2_new(新版本上报的埋点)

2.定义第一个类DataPathTag,老版本path1、新版本path2、同一个数据内path,以上埋点数据文件存放的绝对路径

3.定义第二个类DataUtils是工具类:将文件流放到内存中,BufferedReader按行读取,
3.1 分离内外数据 3.1.1 内层与外层的区别标识为{},{为开始,}为结束,将内层与外层数据生成2个字符串track_info_outer、
track_info_inner, 找到track_info_inner第一个"="的下标,截取字符串,可强转为json

3.1.2 外层判断是否包含}

3.2 内层、外层数据转换 3.2.1 track_info_inner的格式本来就为json,所以直接处理json即可, 截取track_info_inner字符串,
json格式{}里所有内容,从{开始截取,直到}的位置,最后一位为"," { "searchtab":"0", "pageName":"page_searchresults", "group_num":38, }

3.2.2 track_info_outer的格式为A=1 外层数据处理,字符串转数组,数组先以","分隔,再以"="分隔,数组再转json,
如"A=1,B=2,C=3"-->[A=1,B=2,C=3]-->{"A":"1","B":"2","C":"1"}, object_id=dbb0ecb3786549098484, object_title=一出好戏, srid=1,

4. 第三个类JSONdifferent是新老数据的比较。调用DataUtils类,内层、外层分开判断,先判断key,再判断value
老版本的所有key必须在新版本中存在,如果不存在打印key,value。如果存在判断value是否相同,不相同打印

5. 第四个类SingleCompare是单个版本上报的数据校验,判断track_info内是否包含track_info外所有的key
如果不存在,打印key,value。如果存在判断value是否相同,不相同打印

遇到的问题&解决办法

1.value中存在两个==,取第一个
2.value中存在:的情况,如曝光埋点_KG卡片(即UGC大词)"tagvalue":"2:0;1:0",json解析的时候出错

埋点自动化-埋点日志对比

埋点自动化-埋点日志对比

 

埋点自动化-埋点日志对比

 

埋点自动化-埋点日志对比