19.JSON数据格式讲解以及fastjson介绍

目录

本文为《Spark大型电商项目实战》 系列文章之一,主要介绍JSON数据格式和阿里巴巴fastjson工具包。

JSON格式介绍

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

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

对应到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()方法,获取指定的字段的值。

创建fastjson测试类

在包`com.erik.sparkproject.test下新建fastjson测试类FastjsonTest.java

package com.erik.sparkproject.test;

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

/**
 * fastjson测试类
 * @author Erik
 *
 */
public class FastjsonTest {
    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 大型电商项目实战》源码:https://github.com/Erik-ly/SprakProject

本文为《Spark大型电商项目实战》系列文章之一。
更多文章:Spark大型电商项目实战:http://blog.csdn.net/u012318074/article/category/6744423

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值