spark 大型项目实战(十三):用户访问session分析(十三) --json 数据格式

时间:2022-11-01 00:48:30

文章地址:http://www.haha174.top/article/details/258596
什么是JSON?

就是一种数据格式;比如说,我们现在规定,有一个txt文本文件,用来存放一个班级的成绩;然后呢,我们规定,这个文本文件里的学生成绩的格式,是第一行,就是一行列头(姓名 班级 年级 科目 成绩),接下来,每一行就是一个学生的成绩。那么,这个文本文件内的这种信息存放的格式,其实就是一种数据格式。

学生 班级 年级 科目 成绩
张三 一班 大一 高数 90
李四 二班 大一 高数 80

ok,对应到JSON,它其实也是代表了一种数据格式,所谓数据格式,就是数据组织的形式。比如说,刚才所说的学生成绩,用JSON格式来表示的话,如下:

[{“学生”:”张三”, “班级”:”一班”, “年级”:”大一”, “科目”:”高数”, “成绩”:90}, {“学生”:”李四”, “班级”:”二班”, “年级”:”大一”, “科目”:”高数”, “成绩”:80}]

其实,JSON,很简单,一点都不复杂,就是对同样一批数据的,不同的一种数据表示的形式。

JSON的数据语法,其实很简单:如果是包含多个数据实体的话,比如说多个学生成绩,那么需要使用数组的表现形式,就是[]。对于单个数据实体,比如一个学生的成绩,那么使用一个{}来封装数据,对于数据实体中的每个字段以及对应的值,使用key:value的方式来表示,多个key-value对之间用逗号分隔;多个{}代表的数据实体之间,用逗号分隔。

扩展一下:

JSON在企业级项目开发过程中,扮演的角色是无比重要的。最常用的地方,莫过于基于Ajax的前端和后端程序之间的通信。比如说,在前端页面中,可以不刷新页面,直接发送一个Ajax异步请求到后端,后端返回一个JSON格式的数据,然后前端使用JSON格式的数据,渲染页面中的对应地方的信息。

在我们的项目中,JSON是起到了什么作用呢?我们在task表中的task_param字段,会存放不同类型的任务对应的参数。比如说,用户访问session分析模块与页面单跳转化率统计模块的任务参数是不同的,但是,使用同一张task表来存储所有类型的任务。那么,你怎么来存储不同类型的任务的不同的参数呢?你的表的字段是事先要定好的呀。

所以,我们采取了,用一个task_param字段,来存储不同类型的任务的参数的方式。task_param字段中,实际上会存储一个任务所有的字段,使用JSON的格式封装所有任务参数,并存储在task_param字段中。就实现了非常灵活的方式。

如何来操作JSON格式的数据?

比如说,要获取JSON中某个字段的值。我们这里使用的是阿里的fastjson工具包。使用这个工具包,可以方便的将字符串类型的JSON数据,转换为一个JSONObject对象,然后通过其中的getX()方法,获取指定的字段的值。
引入依赖

<dependency>
            <groupId>com.alibaba</groupId>
            <artifactId>fastjson</artifactId>
            <version>1.2.44</version>
        </dependency>

编写一个case 测试一下

public class JsonTest {
    public static void main(String[] args) { String json = "[{'学生':'张三', '班级':'一班', '年级':'大一', '科目':'高数', '成绩':90}, {'学生':'李四', '班级':'二班', '年级':'大一', '科目':'高数', '成绩':80}]"; JSONArray jsonArray = JSONArray.parseArray(json); JSONObject jsonObject = jsonArray.getJSONObject(0); System.out.println(jsonObject.getString("学生")); } }

输出结果

张三

欢迎关注,更多福利

spark 大型项目实战(十三):用户访问session分析(十三) --json 数据格式