1. 程式人生 > >大資料專案實戰之十二:12.JSON資料格式講解以及fastjson介紹

大資料專案實戰之十二:12.JSON資料格式講解以及fastjson介紹

什麼是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()方法,獲取指定的欄位的值。

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

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 = " + jsonObject.getString("學生"));

    }
}