埋点日志格式化后的json数据
{
"eventid": "viewConentDetailEvent",
"event": {
"pgId": "405",
"contentType": "",
"contentID": "00824",
"contentTile": "",
"contentChannel": "",
"contentTag": ""
},
"user": {
"uid": "416687",
"account": "",
"email": "",
"phoneNbr": "15608642823",
"birthday": "",
"isRegistered": "",
"isLogin": "",
"addr": "",
"gender": "",
"phone": {
"imei": "4914733564681748",
"mac": "2a-53-14-00-2d-05-0c",
"imsi": "5182110896884591",
"osName": "android",
"osVer": "8.2",
"androidId": "9bcac6961103ed62",
"resolution": "1356*768",
"deviceType": "HUAWEI_MATE2",
"deviceId": "",
"uuid": "tDyOPpuuiUjiCt1v"
},
}
在解析Json的时候(前提)
1.安装插件
要在你的Notepad++上面加载一个解析json的插件"NPPJSONViewer_64"安装在你的Notepad++安装目录的plugins文件夹内,
重启Notepad++然后再目录中找到 插件->插件管理->可用->输入NPPJSONViewer_64->安装即可
2.安装依赖
然后选中其中一行复制到新的页面中进行json格式化,然后就可以清晰明了的看着你的数据解析json数据的
再解析json前首先在你的idea上安装fastjson的依赖
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>fastjson</artifactId>
<version>${fastjson.version}</version>
</dependency>
然后直接可以进行抽取各个字段解析了
注意事项:
1.如果是第一层的json直接
val jsonobj=JSON.parseObject(line)
json.getString("列名")
2.如果我们的json每一个字段内容是不规范的,我们可以将他封装为map类型的数据我们直接.map[String,String]生成的是一个java的map[String,String],所以我们将要写一个scala.collection.JavaConversions._的隐式转化将map的集合转换为scala的格式
import scala.collection.JavaConversions._
val event: Map[String, String] = jsonobj.getJSONObject("event").getInnerMap.asInstanceOf[util.Map[String, String]].toMap
val userobj =jsonobj.getJSONObject("user")
userobj.getString("uid")
3.如果是被嵌套的第三层数据就沿用的二层的方法.(例如以上数据)
val phoneobj: JSONObject = userobj.getJSONObject("phone")
val imei = phoneobj.getString("imei")
这样就可以将埋点日志中的json数据解析成一个规范化的一个表格中了
+------+----------------+--------------------+----------------+-------+
|uid |imei |mac |imsi |osName |
+------+----------------+--------------------+----------------+-------+
|416687|4914733564681748|2a-53-14-00-2d-05-0c|5182110896884591|android|
|416687|4914733564681748|2a-53-14-00-2d-05-0c|5182110896884591|android|
|416687|4914733564681748|2a-53-14-00-2d-05-0c|5182110896884591|android|
|416687|4914733564681748|2a-53-14-00-2d-05-0c|5182110896884591|android|
|416687|4914733564681748|2a-53-14-00-2d-05-0c|5182110896884591|android|
|416687|4914733564681748|2a-53-14-00-2d-05-0c|5182110896884591|android|
|416687|4914733564681748|2a-53-14-00-2d-05-0c|5182110896884591|android|
|416687|4914733564681748|2a-53-14-00-2d-05-0c|5182110896884591|android|
|416687|4914733564681748|2a-53-14-00-2d-05-0c|5182110896884591|android|
|416687|4914733564681748|2a-53-14-00-2d-05-0c|5182110896884591|android|
+------+----------------+--------------------+----------------+-------+