解析埋点日志中的JSON的文件

解析埋点日志中的JSON的文件

埋点日志格式化后的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|
+------+----------------+--------------------+----------------+-------+
发布了48 篇原创文章 · 获赞 11 · 访问量 1551

猜你喜欢

转载自blog.csdn.net/weixin_45896475/article/details/103957574