日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

你还在使用fastjson,可以尝试jsoncode

發(fā)布時間:2023/12/10 编程问答 36 豆豆
生活随笔 收集整理的這篇文章主要介紹了 你还在使用fastjson,可以尝试jsoncode 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

? ? ? ? ?

在現(xiàn)代的整個互聯(lián)網(wǎng)的交互通信中,json表達(dá)的簡潔性和文本化的特性給我們帶來很大的操作便捷性。所以大量的通信都使用這種表達(dá)方式。

但是對于json方式,大家有比較多的解析方式,其中阿里開源的fastjson相信是我們大家使用最多的一種。

但是我們現(xiàn)在有一種更好的解析方式----jsoncode,maven包引用是這樣的:

<dependency><groupId>cn.miludeer</groupId><artifactId>jsoncode</artifactId><version>1.2.4</version> </dependency>

下面我們做個實(shí)驗(yàn),比較jsoncode和fastjson兩者之前的區(qū)別。比如我們解析下面這段json結(jié)構(gòu):

{"json": {"a": {"www": "ff","rrr": ["v1", "v2"]},"b": {"www": "4567ttt","rrr": ["v1", "v2"]}} }

我們想要獲取【json】下的【b】下的【www】的值“4567ttt”,測試代碼如下:

public class Jsontest {private static String json = "{\"json\":{\"a\":{\"www\":\"ff\",\"rrr\":[\"v1\",\"v2\"]},\"b\":{\"www\":\"4567ttt\",\"rrr\":[\"v1\",\"v2\"]}}}";public static String usefastjson() { ?// 使用fastjsonJSONObject ob = JSON.parseObject(json).getJSONObject("json").getJSONObject("b");return ob.getString("www");}public static String usejsoncode() { ? // 使用jsoncodeString ret = JsonCode.getValue(json, "$.json.b.www");return ret;}public static void main(String[] argv) {long time1 = System.currentTimeMillis();for(int i=0; i<10000000;i++) {usejsoncode();}long time2 = System.currentTimeMillis();for(int i=0; i<10000000;i++) {usefastjson();}long time3 = System.currentTimeMillis();System.out.println("fastJson:" + (time3 - time2));System.out.println("jsoncode:" + (time2 - time1));} }

執(zhí)行之后結(jié)果如下:

fastJson:10772 jsoncode:6457

從運(yùn)行10000000次,消耗時間的結(jié)果上可見:目前的測試條件下,確實(shí)是fastjson稍微劣勢。這么差,我們還要用它么?

我們下面轉(zhuǎn)入正題,這里先不說fastjson的在處理上的性能,更何況這里的測試也不是很全面。這里主要說的是使用jsoncode在編程操作的便捷上優(yōu)化。

我們仔細(xì)研究下兩者的處理方式。fastjson的方式:

String value = JSON.parseObject(json).getJSONObject("json").getJSONObject("b").getString("www");

jsoncode的方式:

String value = JsonCode.getValue(json, "$.json.b.www");

明顯看到兩者的取數(shù)據(jù)上的區(qū)別,jsoncode的取用的方式更加的直接和便捷,直接使用“$.json.b.www”這樣的取數(shù)路徑,就能取出這個結(jié)構(gòu)下的對應(yīng)值。這種方式更適合我們在配置文件中配置出來所需要取的數(shù)據(jù)的對應(yīng)的取數(shù)路徑,統(tǒng)一化處理邏輯。取數(shù)據(jù)的語意上也比較明確和完整,方便描述。

建議:如果json中的幾乎所有字典都要用到,直接使用fastjson的解析就很方便了。如果僅使用某一個或幾個字段,或是包括一些基本的運(yùn)算,那jsoncode的優(yōu)勢就完全體現(xiàn)出來啦!

此外,jsoncode中還支持一些表達(dá)式功能(包括一些函數(shù)),歡迎大家訪問:https://github.com/lujinfeifly/jsoncode

作者:陸小飛
鏈接:https://www.jianshu.com/p/eeba48f1e563

文章推薦程序員效率:畫流程圖常用的工具程序員效率:整理常用的在線筆記軟件遠(yuǎn)程辦公:常用的遠(yuǎn)程協(xié)助軟件,你都知道嗎?51單片機(jī)程序下載、ISP及串口基礎(chǔ)知識硬件:斷路器、接觸器、繼電器基礎(chǔ)知識

總結(jié)

以上是生活随笔為你收集整理的你还在使用fastjson,可以尝试jsoncode的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。