JSON序列化和反序列化調(diào)研文檔

1 測(cè)試環(huán)境

操作系統(tǒng):window 7

CPU:i5-5200U 2.20GHz

內(nèi)存:8GB

運(yùn)行環(huán)境:MyEclipse 2015

JDK:jdk1.8.0_92


2 序列化

2.1 簡(jiǎn)單數(shù)據(jù)序列化

原始數(shù)據(jù):

String name = "abcdefg";

int age = 25;

boolean verified = false;

序列化后:

{"name":"abcdefg","age":25,"verified":false}

注:測(cè)試是單線程測(cè)試新锈,時(shí)間是毫秒(ms) ?

2.2 包含數(shù)組數(shù)據(jù)序列化

原始數(shù)據(jù):

String name = "abcdefg";

int age = 25;

boolean verified = false;

封裝后的數(shù)組為:[{"attrName":"attr1","value":"attribute1"},{"attrName":"attr2","value":123}]

序列化后:

{"name":"abcdefg","age":25,"verified":false,"attrArray":[{"attrName":"attr1","value":"attribute1"},{"attrName":"attr2","value":123}]}

注:測(cè)試是單線程測(cè)試柔袁,時(shí)間是毫秒(ms)

2.3 簡(jiǎn)單Json數(shù)據(jù)反序列化

Json數(shù)據(jù):

{"name":"abcdefg","age":25,"verified":false}

注:測(cè)試是單線程測(cè)試军援,時(shí)間是毫秒(ms)

2.4 Json數(shù)組數(shù)據(jù)反序列化

Json數(shù)據(jù):

{"name":"abcdefg","age":25,"verified":false,"attrArray":[{"attrName":"attr1","value":"attribute1"},{"attrName":"attr2","value":123}]}

注:測(cè)試是單線程測(cè)試排宰,時(shí)間是毫秒(ms)

2.5 實(shí)際例子(以獲取設(shè)備屬性信息值的結(jié)果進(jìn)行json轉(zhuǎn)換為例子)

輸入數(shù)據(jù):

String content = "{ \"cursor\" : { \"firstBatch\" : [ { \"_id\" : { \"$oid\" : \"5b20bf92e2237228c4f343e1\"} , \"keyhash\" : \"Bc1zh875nPEQkymQkzW3V6aj208=\" , \"devname\" : \"卷簾門-兩號(hào)\" , \"writetime_devname\" : { \"$date\" : \"2018-06-13T09:51:51.703Z\"} , \"dev_head_protrait\" : \"5b20e2e98bec6dd0bb728ffc.jpg\" , \"writetime_dev_head_protrait\" : { \"$date\" : \"2018-06-13T09:25:03.573Z\"} , \"regist_time\" : { \"$date\" : \"2018-06-13T06:54:10.000Z\"} , \"writetime_regist_time\" : { \"$date\" : \"2018-06-13T06:54:10.917Z\"} , \"expire_time\" : { \"$date\" : \"2018-12-30T06:54:10.000Z\"} , \"writetime_expire_time\" : { \"$date\" : \"2018-06-13T06:54:10.918Z\"} , \"update_autofota\" : \"abcdefg\" , \"writetime_update_autofota\" : { \"$date\" : \"2018-06-26T08:49:06.186Z\"} , \"online\" : 1.0 , \"writetime_online\" : { \"$date\" : \"2018-06-27T05:46:21.491Z\"} , \"address\" : \"對(duì)方\" , \"writetime_address\" : { \"$date\" : \"2018-06-13T09:51:51.704Z\"} , \"wifissid@zot\" : \"zy5g\" , \"writetime_wifissid@zot\" : { \"$date\" : \"2018-06-27T07:24:38.252Z\"} , \"swver@zot\" : \"ZHUYUN_1.4.3\" , \"writetime_swver@zot\" : { \"$date\" : \"2018-06-26T06:30:33.537Z\"} , \"hwver@zot\" : \"ESP8266EX\" , \"writetime_hwver@zot\" : { \"$date\" : \"2018-06-26T06:30:33.123Z\"} , \"fota_update@zot\" : \"bin\" , \"writetime_fota_update@zot\" : { \"$date\" : \"2018-06-15T08:10:41.319Z\"}}] , \"id\" : 0 , \"ns\" : \"zot_device_2_1_1.t1_1_device_info\"} , \"ok\" : 1.0}";

輸出數(shù)據(jù):

String result= "{ \"_id\" : { \"$oid\" : \"5b20bf92e2237228c4f343e1\"} , \"keyhash\" : \"Bc1zh875nPEQkymQkzW3V6aj208=\" , \"devname\" : \"卷簾門-兩號(hào)\" , \"writetime_devname\" : { \"$date\" : \"2018-06-13T09:51:51.703Z\"} , \"dev_head_protrait\" : \"5b20e2e98bec6dd0bb728ffc.jpg\" , \"writetime_dev_head_protrait\" : { \"$date\" : \"2018-06-13T09:25:03.573Z\"} , \"regist_time\" : { \"$date\" : \"2018-06-13T06:54:10.000Z\"} , \"writetime_regist_time\" : { \"$date\" : \"2018-06-13T06:54:10.917Z\"} , \"expire_time\" : { \"$date\" : \"2018-12-30T06:54:10.000Z\"} , \"writetime_expire_time\" : { \"$date\" : \"2018-06-13T06:54:10.918Z\"} , \"update_autofota\" : \"abcdefg\" , \"writetime_update_autofota\" : { \"$date\" : \"2018-06-26T08:49:06.186Z\"} , \"online\" : 1.0 , \"writetime_online\" : { \"$date\" : \"2018-06-27T05:46:21.491Z\"} , \"address\" : \"對(duì)方\" , \"writetime_address\" : { \"$date\" : \"2018-06-13T09:51:51.704Z\"} , \"wifissid@zot\" : \"zy5g\" , \"writetime_wifissid@zot\" : { \"$date\" : \"2018-06-27T07:24:38.252Z\"} , \"swver@zot\" : \"ZHUYUN_1.4.3\" , \"writetime_swver@zot\" : { \"$date\" : \"2018-06-26T06:30:33.537Z\"} , \"hwver@zot\" : \"ESP8266EX\" , \"writetime_hwver@zot\" : { \"$date\" : \"2018-06-26T06:30:33.123Z\"} , \"fota_update@zot\" : \"bin\" , \"writetime_fota_update@zot\" : { \"$date\" : \"2018-06-15T08:10:41.319Z\"}}";

注:進(jìn)行了兩次的json操作摄乒,第一次為將content字符串轉(zhuǎn)換為json對(duì)象瑰煎,第二次為從json對(duì)象中提取出設(shè)備屬性信息值的數(shù)組屹篓。這個(gè)過程為實(shí)際代碼中的應(yīng)用過程莉御。

注:測(cè)試是單線程測(cè)試撇吞,時(shí)間是毫秒(ms)

2.6注意事項(xiàng)

主要對(duì)比Fastjson和Json-lib的使用俗冻。Fastjson和Json-lib的用法基本一致,有個(gè)別小地方不太一樣牍颈,需要注意迄薄。

1.Fastjson序列化時(shí)會(huì)出現(xiàn)序列化后和序列化前的順序錯(cuò)亂,雖然這不影響解析煮岁,但是會(huì)影響閱讀讥蔽,使用

JSONObject jsonObject = new JSONObject(true);

可以防止序列化順序錯(cuò)亂,不過這僅限普通的json人乓,不包含數(shù)組勤篮。

2.數(shù)組json序列化注意事項(xiàng)。如:

ArrayList<String> attrArray = new ArrayList<String>();

attrArray.add(...);

attrArray.add(...);

JSONObject jsonObject = new JSONObject(true);

jsonObject.put("attrArray", attrArray.toString());

如果是Json-lib色罚,序列化后碰缔,值是{"attrArray":[{...},{...}]}

如果是Fastjson,序列化后戳护,值是{"attrArray":"[{...},{...}]"}

會(huì)發(fā)現(xiàn)金抡,F(xiàn)astjson序列化后數(shù)組前會(huì)多了引號(hào),為了去掉這個(gè)引號(hào)腌且,需要將jsonObject.put("attrArray", attrArray.toString());改為jsonObject.put("attrArray", JSONArray.parseArray(attrArray.toString()));

此時(shí)就會(huì)去掉引號(hào)了梗肝,但是又發(fā)現(xiàn)數(shù)組里面的順序也會(huì)錯(cuò)亂,為了去除錯(cuò)亂铺董,可以使用jsonObject.put("attrArray", JSONArray.parseArray(attrArray.toString(), new LinkedHashMap<String,Object>().getClass()));

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末巫击,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子精续,更是在濱河造成了極大的恐慌坝锰,老刑警劉巖,帶你破解...
    沈念sama閱讀 217,907評(píng)論 6 506
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件重付,死亡現(xiàn)場(chǎng)離奇詭異顷级,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)确垫,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,987評(píng)論 3 395
  • 文/潘曉璐 我一進(jìn)店門弓颈,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人删掀,你說我怎么就攤上這事翔冀。” “怎么了爬迟?”我有些...
    開封第一講書人閱讀 164,298評(píng)論 0 354
  • 文/不壞的土叔 我叫張陵橘蜜,是天一觀的道長。 經(jīng)常有香客問我,道長计福,這世上最難降的妖魔是什么跌捆? 我笑而不...
    開封第一講書人閱讀 58,586評(píng)論 1 293
  • 正文 為了忘掉前任,我火速辦了婚禮象颖,結(jié)果婚禮上佩厚,老公的妹妹穿的比我還像新娘。我一直安慰自己说订,他們只是感情好抄瓦,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,633評(píng)論 6 392
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著陶冷,像睡著了一般钙姊。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上埂伦,一...
    開封第一講書人閱讀 51,488評(píng)論 1 302
  • 那天煞额,我揣著相機(jī)與錄音,去河邊找鬼沾谜。 笑死膊毁,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的基跑。 我是一名探鬼主播婚温,決...
    沈念sama閱讀 40,275評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼媳否!你這毒婦竟也來了栅螟?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,176評(píng)論 0 276
  • 序言:老撾萬榮一對(duì)情侶失蹤篱竭,失蹤者是張志新(化名)和其女友劉穎嵌巷,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體室抽,經(jīng)...
    沈念sama閱讀 45,619評(píng)論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,819評(píng)論 3 336
  • 正文 我和宋清朗相戀三年靡努,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了坪圾。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 39,932評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡惑朦,死狀恐怖兽泄,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情漾月,我是刑警寧澤病梢,帶...
    沈念sama閱讀 35,655評(píng)論 5 346
  • 正文 年R本政府宣布,位于F島的核電站,受9級(jí)特大地震影響蜓陌,放射性物質(zhì)發(fā)生泄漏觅彰。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,265評(píng)論 3 329
  • 文/蒙蒙 一钮热、第九天 我趴在偏房一處隱蔽的房頂上張望填抬。 院中可真熱鬧,春花似錦隧期、人聲如沸飒责。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,871評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽宏蛉。三九已至,卻和暖如春性置,著一層夾襖步出監(jiān)牢的瞬間拾并,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,994評(píng)論 1 269
  • 我被黑心中介騙來泰國打工蚌讼, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留辟灰,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 48,095評(píng)論 3 370
  • 正文 我出身青樓篡石,卻偏偏與公主長得像芥喇,于是被迫代替她去往敵國和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子凰萨,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,884評(píng)論 2 354

推薦閱讀更多精彩內(nèi)容