27.Spark大型电商项目-用户访问session分析-JSON数据格式讲解以及fastjson介绍

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/someby/article/details/87989197

目录

什么是JSON?

测试

FastjonTest.java

 

本篇文章将介绍JSON格式。

什么是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()方法,获取指定的字段的值。

测试

FastjonTest.java

package main.xxx.java.test;

import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;

/**
 * FileName: FastjsonTest
 * Author:   hadoop
 * Email:    [email protected]
 * Date:     19-2-27 下午8:16
 * Description:JSON格式测试类
 */
public class FastjsonTest {
    public static void main(String[] args){
        /**
         * 测试多个JSON格式的数据
         */
        String json = "[{'学生':'张三', '班级':'一班', '年级':'大一', '科目':'高数', '成绩':90}, {'学生':'李四', '班级':'二班', '年级':'大一', '科目':'高数', '成绩':80}]";
        JSONArray jsonArray = JSONArray.parseArray(json);
        JSONObject jsonObject = jsonArray.getJSONObject(0);
        String name = jsonObject.getString("学生");
        String classs = jsonObject.getString("班级");
        String grade = jsonObject.getString("年级");
        String subject = jsonObject.getString("科目");
        int score = Integer.valueOf(jsonObject.getInteger("成绩"));
        System.out.println("name: "+name +"\n"+"classs: "+classs +"\n"
        +"grade: "+grade+"\n"+"subject: "+subject+"\n" +"score: "+score);


        /**
         * 测试单条数据的JSON格式数据
         */
        System.out.println();
        String json2 = "{'学生':'张三', '班级':'一班', '年级':'大一', '科目':'高数', '成绩':90}";
        JSONObject js = JSONObject.parseObject(json2);
        System.out.println("name: "+ js.getString("学生"));
    }
}


 

猜你喜欢

转载自blog.csdn.net/someby/article/details/87989197