json格式是什么?json格式詳細(xì)介紹
一、json基礎(chǔ)入門
1、什么是json
JSON:一種與開(kāi)發(fā)語(yǔ)言無(wú)關(guān)的、輕量級(jí)的數(shù)據(jù)存儲(chǔ)格式,全稱JavaScript Object Notation,一種數(shù)據(jù)格式的標(biāo)準(zhǔn)規(guī)范,起初來(lái)源于JavaScript這門語(yǔ)言,后來(lái)隨著使用的廣泛,幾乎每門開(kāi)發(fā)語(yǔ)言都有處理JSON的API。
優(yōu)點(diǎn):易于人的閱讀和編寫,易于程序解析與生產(chǎn)。
JSON樣例:首先一個(gè)花括號(hào){},整個(gè)代表一個(gè)對(duì)象,同時(shí)里面是一種Key-Value的存儲(chǔ)形式,它還有不同的數(shù)據(jù)類型來(lái)區(qū)分
2、數(shù)據(jù)類型表示
數(shù)據(jù)結(jié)構(gòu):Object、Array
基本類型:string,number,true,false,null
(1)Object
{key:value,key:value...}
key:string類型
value:任何基本類型或數(shù)據(jù)結(jié)構(gòu)
(2)Array
[value,value...]
value:任何基本類型或數(shù)據(jù)結(jié)構(gòu)。
比如:{"name":"李廣", "values":[1,2,45,"你好"] }
3、JSON數(shù)據(jù)示例
二、JSON IN JAVA
1、json使用
2、使用Map構(gòu)建json
【a】:創(chuàng)建Map集合,通過(guò)Map的put方法存儲(chǔ)數(shù)據(jù)。
【b】創(chuàng)建JSONObject對(duì)象并把Map對(duì)象作為參數(shù)
3、使用Java Bean構(gòu)建對(duì)象
【a】創(chuàng)建Java Bean
【b】創(chuàng)建JSONObject,并把Bean作為參數(shù)
4、從文件讀取json
輔助:一般解析JSON數(shù)據(jù)時(shí),需要獲取JSON數(shù)據(jù)的途徑,這個(gè)途徑可能是文件讀取或遠(yuǎn)程API網(wǎng)絡(luò)上獲取JSON數(shù)據(jù),這里講解從文件途徑中進(jìn)行文件讀取,并轉(zhuǎn)換成一個(gè)我們想要的對(duì)象,在pom文件中引入common-io的依賴,該包方便讀取文件的內(nèi)容。
案例:從一個(gè)文件中讀取JSON數(shù)據(jù),并轉(zhuǎn)換為對(duì)象。
步驟1:項(xiàng)目中創(chuàng)建王小二的JSON格式數(shù)據(jù)。
步驟2:讀取該文件,首先聲明JSON文件的File,并指明該文件的路徑(項(xiàng)目的根路徑下)
步驟3:通過(guò)FileUtils類的readFileToString讀入JSON文件,再通過(guò)JSONObject構(gòu)造函數(shù)傳入讀入的JSON文件。
JSONObject提供了一些獲取指定key值的方法:
【1】getString("key")獲取value類型為String的值
【2】getDouble("key")獲取value類型為number的值
【3】getBoolean("key")獲取value類型為boolean的值
【4】getJSONArray("key")獲取value類型為數(shù)組的值,它的返回值是JSONArray,它是一個(gè)數(shù)組。
如果在讀取時(shí),JSON數(shù)據(jù)中沒(méi)有指定key,一般需要打印一個(gè)日志或者拋出一個(gè)異常,這里可以使用JSONObject對(duì)象的isNull("key")方法,判斷如果沒(méi)有key值做一些操作。
三、GSON的使用
1、GSON生成json數(shù)據(jù)
步驟1:添加依賴
步驟2:使用JavaBean創(chuàng)建GSON數(shù)據(jù),通過(guò)GSON的toJson(Bean對(duì)象)就可以轉(zhuǎn)換為GSON數(shù)據(jù)。
GSON:可以使用@SerializedName(“NAME”)改變GSON的key值。
2、生成json數(shù)據(jù)
GSON:可以輸出JSON樣式數(shù)據(jù),可以使用GsonBuilder在構(gòu)建JSON數(shù)據(jù)過(guò)程中,使用setPrettyPrinting()方法,然后就不使用new Gson對(duì)象而是通過(guò)gsonBuilder.create()來(lái)創(chuàng)建Gson對(duì)象。
GSON:可以使用GsonBuilder對(duì)象在解析時(shí),使用setFieldNamingStrategy(回調(diào)函數(shù))進(jìn)行一些操作,例如:把Key變成大寫,如果為其他還是默認(rèn)值。
GSON:JavaBean的有些屬性不想暴露在JSON數(shù)據(jù)中,通過(guò)JSON的默認(rèn)生成方式會(huì)將所有屬性生成key和value進(jìn)行輸出,而GSON通過(guò)聲明一個(gè)類型為transient類型的屬性,這樣在JSON數(shù)據(jù)生成過(guò)程中就會(huì)忽略掉該屬性。
3、GSON解析
4、GSON解析 日期轉(zhuǎn)換
JSON不支持日期格式數(shù)據(jù),所以只能使用String類型的日期。但是java中有Date數(shù)據(jù)類型的數(shù)據(jù),GSON是支持日期類型數(shù)據(jù)的(此處的支持是指將日期轉(zhuǎn)換成Date的格式)。
步驟1:創(chuàng)建Gson對(duì)象時(shí),通過(guò)new GsonBuilder()的setDateFormat(“yyyy-MM-dd”).create(),通過(guò)該模板GSON會(huì)把符合該模式的字符串日期自動(dòng)轉(zhuǎn)換成Date的類型
5、集合類解析
GSON另外一個(gè)常用操作:進(jìn)行轉(zhuǎn)換和解析過(guò)程中,能夠?qū)SON中的數(shù)組和java中的集合類進(jìn)行對(duì)接。
案例:這里把實(shí)體類中數(shù)組類型的major換為集合類型List。

2022-01-12 16:50:28
2022-01-12 14:16:53
2022-01-12 09:59:21
2022-01-12 08:30:09
2022-01-12 08:28:09
2022-01-12 08:26:11
2022-01-12 08:24:25
2022-01-12 08:22:56
2022-01-12 08:21:28
2022-01-12 08:19:22
2022-01-12 08:15:03
2022-01-12 08:13:37
2022-01-12 08:12:23 熱門文章
- 1消息稱Win11調(diào)整硬件安裝需求之后可運(yùn)行5.25寸軟盤
- 2蘋果iPad mini 6屏幕刷新率只有60Hz屏幕或不能滿足游戲需求
- 3三星永久關(guān)閉Tizen應(yīng)用商店:目前相關(guān)手機(jī)用戶已經(jīng)無(wú)法訪問(wèn)
- 4三星Galaxy S22 Ultra手寫筆延遲突破2.8毫秒!成品預(yù)計(jì)今年2月推出
- 5Win11照片應(yīng)用迎來(lái)更新:重新優(yōu)化調(diào)整圖片編輯功能
- 6Chrome 97正式版預(yù)計(jì)年內(nèi)2月1日轉(zhuǎn)正 修復(fù)數(shù)十個(gè)安全BUG
- 7消息稱iPhone 14 Pro前置攝像頭將采用藥丸屏設(shè)計(jì) FaceID轉(zhuǎn)移到顯示屏下
- 8對(duì)不起,我恐怕不能這么做?用戶發(fā)現(xiàn)蘋果Siri無(wú)法為Apple Music歌曲評(píng)分
- 9微信視頻號(hào)直播推出扶持不少于10萬(wàn)個(gè)優(yōu)質(zhì)商家激勵(lì)計(jì)劃 引導(dǎo)私域用戶直播
- 10微信支持?jǐn)?shù)字人民幣支付:將新增“使用數(shù)字人民幣付款”選項(xiàng)
熱點(diǎn)專題
-
絕版旗艦堅(jiān)果R2獲更新:TNT連...1月7日消息,堅(jiān)果R2用戶在百度貼吧反映,堅(jiān)果R2手機(jī)獲得了SmartisanOS更新,版本號(hào)為8 5 1,新版系統(tǒng)... -
iPhone 13 Pro需求產(chǎn)能供不...富士康鄭州工廠又在招工了,iPhone的產(chǎn)能缺口看來(lái)很大。據(jù)悉,iPhone 13 Pro需求旺盛,最大組裝廠富士... -
百度投資生物醫(yī)藥公司瑞順生...企查查APP顯示,1月4日,廣東瑞順生物技術(shù)有限公司發(fā)生工商變更,新增百度關(guān)聯(lián)公司三亞百川致新私募股權(quán)... -
盜版軟件Popcorn Time宣布關(guān)...1月5日 消息:盜版軟件Popcorn Time宣布關(guān)閉了。這個(gè)通過(guò)盜版BitTorrent資源向用戶傳遞電影內(nèi)容,并承... -
快手12月份打擊私單交易等詐...1月5日消息,日前,快手發(fā)布了最新一期關(guān)于嚴(yán)厲打擊詐騙類帳號(hào)的公告,該平臺(tái) 12 月份共處罰詐騙類帳... -
再也不怕磁盤占用高了!微軟W...微軟的Office辦公軟件是每個(gè)打工人幾乎都離不開(kāi)的,它實(shí)際上是包括Word、Excel、PPT等多種軟件在內(nèi)的全... -
黑莓BlackBerry OS停止運(yùn)行...1月4日,黑莓打造的BlackBerry OS停服。官方稱,黑莓不再提供適用于BlackBerry7 1OS及更早版本、Black... -
Intel預(yù)熱12代雞血版i9-12900...今天晚上,Intel將會(huì)發(fā)布12代酷睿桌面版非K系列、移動(dòng)版,應(yīng)該會(huì)有博銳商務(wù)版,以及一個(gè)特殊型號(hào):i9-12... -
曝5G版iPhone SE將于上半年...除了挖孔屏iPhone 14、M2處理器MacBook Air、40核CPU+128核GPU的Mac Pro等產(chǎn)品,蘋果名記Mark Gurma... -
曝iPhone 14有望取消劉海設(shè)...對(duì)于iPhone 14來(lái)說(shuō),按照蘋果一貫的更新節(jié)奏看,這一代新機(jī)的外形要發(fā)生變化了,而去掉劉海,改用打孔...
Copy 2006-2020 財(cái)訊中國(guó) 版權(quán)所有<豫ICP備17019456號(hào)-9
聯(lián)系網(wǎng)站:52 78 229 @qq.com
營(yíng)業(yè)執(zhí)照公示信息
聲明:本站所有文章、數(shù)據(jù)僅供參考,使用前務(wù)請(qǐng)仔細(xì)閱讀法律聲明,風(fēng)險(xiǎn)自負(fù)。

相關(guān)新聞