【JavaWeb】JSON基礎(chǔ)

JSON

JavaScript Object Notation(JavaScript 對象表示法);

JSON是輕量級的文本數(shù)據(jù)交換格式诉字;

JSON獨立于語言懦尝,具有自我描述性,更易理解壤圃;

JSON語法規(guī)則

  • 數(shù)據(jù)由鍵(key)/值(value)描述陵霉,由逗號分隔
  • 大括號代表一個完整的對象,擁有多個鍵/值對
  • 中括號保存數(shù)組伍绳,多個對象之間使用逗號分隔
{
    "site":[
        {"name":"慕課網(wǎng)", "url":"www.imooc.com"},
        {"name":"百度", "url":"www.baidu.com"},
        {"name":"網(wǎng)易", "url":"www.163.com"}
    ]
}

JSON與字符串相互轉(zhuǎn)換

  • JSON.parse()方法將字符串轉(zhuǎn)換為JSON對象
  • JSON.stringify()方法將JSON對象轉(zhuǎn)換為字符串
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
<script type="text/javascript">
    <!--JS中將字符串轉(zhuǎn)換成JSON-->
    var str = "{\"class_name\" : \"五年級一班\"}";
    var json = JSON.parse(str);
    console.log(str);
    console.log(json);
    document.write("班級:" + json.class_name + "<br>");
    
    <!--JS中將JSON轉(zhuǎn)換成字符串-->
    var json2 = {"class_name" : "五年級二班"};
    var str2 = JSON.stringify(json2);
    console.info(json2);
    console.info(str2);
    document.write(str2 + "<br>");
    
    <!--JS中JSON對象初始化-->
    var json3 = {};
    json3.class_name = "五年級三班";
    console.log(json3);
    document.write("班級:" + json3.class_name);
</script>
</head>
<body>

</body>
</html>

JSON與Java交互

  • Java的JSON工具包還有FastJson踊挠、Jackson、Gson冲杀、Json-lib...
  • FastJson是阿里巴巴著名的JSON序列化與反序列工具包
  • FastJson國內(nèi)擁有大量使用者效床,擁有API簡單,效率高等優(yōu)點

FastJSON對象序列化與反序列化

Employee.java

package demo;

import java.util.Date;

import com.alibaba.fastjson.annotation.JSONField;

public class Employee {
    @JSONField(serialize = false) //serialize屬性:不對該成員序列化
    private int empId;
    
    private String empName;
    
    @JSONField(name = "hiredate", format = "yyyy-MM-dd") //JSON注解权谁,name屬性:說明key剩檀,format屬性:將日期格式化
    private Date empIn;
    
    public int getEmpId() {
        return empId;
    }
    public void setEmpId(int empId) {
        this.empId = empId;
    }
    public String getEmpName() {
        return empName;
    }
    public void setEmpName(String empName) {
        this.empName = empName;
    }
    public Date getEmpIn() {
        return empIn;
    }
    public void setEmpIn(Date empIn) {
        this.empIn = empIn;
    }
    
    public Employee(int empId, String empName, Date empIn) {
        super();
        this.empId = empId;
        this.empName = empName;
        this.empIn = empIn;
    }
    
    @Override
    public String toString() {
        return "Employee [empId=" + empId + ", empName=" + empName + ", empIn=" + empIn + "]";
    }
    
}

FastJsonSample.java

package demo;

import java.util.Calendar;

import com.alibaba.fastjson.JSON;

public class FastJsonSample {

    public static void main(String[] args) {
        Calendar c = Calendar.getInstance();
        c.set(2019, 1, 24);
        Employee emp = new Employee(007, "星海", c.getTime());
        String json = JSON.toJSONString(emp); //將Java對象轉(zhuǎn)換成JSON字符串
        System.out.println(json);
        Employee emp2 = JSON.parseObject(json, Employee.class); //將JSON字符串轉(zhuǎn)換成Java對象
        System.out.println(emp2);
    }

}

控制臺輸出:

{"empName":"星海","hiredate":"2019-02-24"}
Employee [empId=0, empName=星海, empIn=Sun Feb 24 00:00:00 CST 2019]

FastJSON對象數(shù)組序列化與反序列化

  • JSON.toJSONString(list)將對象數(shù)組序列化
  • JSON.parseArray(json, Employee.class)將JSON數(shù)組反序列化
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市旺芽,隨后出現(xiàn)的幾起案子沪猴,更是在濱河造成了極大的恐慌,老刑警劉巖采章,帶你破解...
    沈念sama閱讀 222,104評論 6 515
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件运嗜,死亡現(xiàn)場離奇詭異,居然都是意外死亡悯舟,警方通過查閱死者的電腦和手機担租,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,816評論 3 399
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來抵怎,“玉大人翩活,你說我怎么就攤上這事阱洪。” “怎么了菠镇?”我有些...
    開封第一講書人閱讀 168,697評論 0 360
  • 文/不壞的土叔 我叫張陵冗荸,是天一觀的道長。 經(jīng)常有香客問我利耍,道長蚌本,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 59,836評論 1 298
  • 正文 為了忘掉前任隘梨,我火速辦了婚禮程癌,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘轴猎。我一直安慰自己嵌莉,他們只是感情好,可當(dāng)我...
    茶點故事閱讀 68,851評論 6 397
  • 文/花漫 我一把揭開白布捻脖。 她就那樣靜靜地躺著锐峭,像睡著了一般。 火紅的嫁衣襯著肌膚如雪可婶。 梳的紋絲不亂的頭發(fā)上沿癞,一...
    開封第一講書人閱讀 52,441評論 1 310
  • 那天,我揣著相機與錄音矛渴,去河邊找鬼椎扬。 笑死,一個胖子當(dāng)著我的面吹牛具温,可吹牛的內(nèi)容都是我干的蚕涤。 我是一名探鬼主播,決...
    沈念sama閱讀 40,992評論 3 421
  • 文/蒼蘭香墨 我猛地睜開眼铣猩,長吁一口氣:“原來是場噩夢啊……” “哼揖铜!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起剂习,我...
    開封第一講書人閱讀 39,899評論 0 276
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎较沪,沒想到半個月后鳞绕,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 46,457評論 1 318
  • 正文 獨居荒郊野嶺守林人離奇死亡尸曼,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 38,529評論 3 341
  • 正文 我和宋清朗相戀三年们何,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片控轿。...
    茶點故事閱讀 40,664評論 1 352
  • 序言:一個原本活蹦亂跳的男人離奇死亡冤竹,死狀恐怖拂封,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情鹦蠕,我是刑警寧澤冒签,帶...
    沈念sama閱讀 36,346評論 5 350
  • 正文 年R本政府宣布,位于F島的核電站钟病,受9級特大地震影響萧恕,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜肠阱,卻給世界環(huán)境...
    茶點故事閱讀 42,025評論 3 334
  • 文/蒙蒙 一票唆、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧屹徘,春花似錦走趋、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,511評論 0 24
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至酥宴,卻和暖如春啦吧,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背拙寡。 一陣腳步聲響...
    開封第一講書人閱讀 33,611評論 1 272
  • 我被黑心中介騙來泰國打工授滓, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人肆糕。 一個月前我還...
    沈念sama閱讀 49,081評論 3 377
  • 正文 我出身青樓般堆,卻偏偏與公主長得像,于是被迫代替她去往敵國和親诚啃。 傳聞我的和親對象是個殘疾皇子淮摔,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 45,675評論 2 359