亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

如何利用JAVA正則表達(dá)式輕松替換JSON中的大字段

 更新時(shí)間:2020年12月08日 12:09:25   作者:wenlongli888  
這篇文章主要給大家介紹了關(guān)于如何利用JAVA正則表達(dá)式輕松替換JSON中大字段的相關(guān)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧

(一)背景

在軟件開(kāi)發(fā)工作中我們經(jīng)常用JSON來(lái)傳輸數(shù)據(jù),根據(jù)業(yè)務(wù)需要不免會(huì)在JSON數(shù)據(jù)中傳輸比較大的數(shù)據(jù),有時(shí)傳輸一個(gè)圖片數(shù)據(jù)會(huì)達(dá)到幾百K或者幾M,而這些大字段數(shù)據(jù)在記錄日志時(shí),不論是文件日志還是數(shù)據(jù)庫(kù)日志,都會(huì)造成大量的IO處理,使接口的響應(yīng)速度大幅下降,同時(shí)會(huì)增加服務(wù)的負(fù)載,降低系統(tǒng)的性能。這時(shí)我們可以選擇不輸出這個(gè)JSON數(shù)據(jù),但往往這樣會(huì)造成更大的問(wèn)題,因此我們會(huì)想如果只不輸出大字段數(shù)據(jù),而其他數(shù)據(jù)正常輸出就好了,但從技術(shù)上往往不易實(shí)現(xiàn)。本文就是給大家提供一種方法,利用JAVA的正則表達(dá)式簡(jiǎn)單方便的替換掉這些大字段,同時(shí)不影響其他JSON字段的輸出。

(二)正則表達(dá)式

我們?cè)谶@里就不詳細(xì)介紹正則表達(dá)式的用法了,只針對(duì)大字段匹配相關(guān)的正則表達(dá)式進(jìn)行講解。

  • 匹配JSON 字段的字段值的正則表達(dá)式
    “:\s*\".+?\"”
  • 匹配超過(guò)1000的長(zhǎng)度的正則表達(dá)式
    .{1000,}
  • 結(jié)合以上的兩個(gè)正則表達(dá)式
    (?=.{1000,})(:\s*\".+?\")

(三)在JAVA代碼中的實(shí)現(xiàn)

在這里寫一個(gè)小例子

 String json = "{\"name\":\"Tom\",\"px\":\"abcdefg11111111111111111111111111\"}";
 String pattern = "(?=.{10,})(:\\s*\\\".+?\\\")";
 json = json.replaceAll(pattern, ":\"*\"");
 System.out.println(json);

執(zhí)行結(jié)果

    {"name":"*","px":"*"}

怎么回事?和預(yù)想不一致,看來(lái)事情并不那樣的簡(jiǎn)單,查一下?=的用法,現(xiàn)在這種寫法相當(dāng)來(lái)說(shuō)是兩個(gè)正則的邏輯與, .{10,}是匹配了一行超過(guò)10個(gè)字符,而(:\s*".+?")則匹配了json的值項(xiàng)目,也就是說(shuō)只要這一行超過(guò)了10個(gè)字符,那么其中的json值都會(huì)被替換。知道了原因我們就好辦了。把兩個(gè)正則合為一個(gè)正則不就OK了嗎。

(四)合并正則表達(dá)式

我們改善以下上面的例子,

 String json = "{\"name\":\"Tom\",\"px\":\"abcdefg11111111111111111111111111\"}";
 String pattern = "(:\\s*\\\".{10,}?\\\")";
 json = json.replaceAll(pattern, ":\"*\"");
 System.out.println(json);

執(zhí)行結(jié)果

    {"name":"*"abcdefg11111111111111111111111111"}

阿來(lái),怎么會(huì)這樣。他竟然匹配到了。。。

{“name”:“Tom”,“px”:“abcdefg11111111111111111111111111”}

隨然還是不對(duì),但離勝利只差一步了,我們?cè)谄ヅ渲杏玫氖?{10,},可以匹配任何字符,因此才會(huì)造成這種問(wèn)題,那么我們把正常值中不應(yīng)該出現(xiàn)的字符排除掉不就可以了嗎。

(五)最終結(jié)果

 String json = "{\"name\":\"Tom\",\"px\":\"abcdefg11111111111111111111111111\"}";
 String pattern = "(:\s*\"[^,\":]{10,}?\")";
 json = json.replaceAll(pattern, ":\"*\"");
 System.out.println(json);

執(zhí)行結(jié)果

   {"name":"Tom","px":"*"}

我們終于得到了想要的結(jié)果。

(六)所感

其實(shí)大家都覺(jué)得正則表達(dá)式比較高深,但如果我們了解了它的原理,正確的應(yīng)用到工作中,會(huì)得到意想不到的驚喜。

有時(shí)由于用法不當(dāng)可能馬上得不到我們想要的結(jié)果,但我認(rèn)為先不要輕易放棄而改變方向,而要分析造成問(wèn)題的原因并想辦法解決,這樣對(duì)正則表達(dá)式的理解和使用能力才能不斷提高,希望這篇文章能對(duì)大家有所幫助。

到此這篇關(guān)于如何利用JAVA正則表達(dá)式輕松替換JSON中大字段的文章就介紹到這了,更多相關(guān)JAVA正則表達(dá)式替換JSON大字段內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Java幾個(gè)實(shí)例帶你進(jìn)階升華下篇

    Java幾個(gè)實(shí)例帶你進(jìn)階升華下篇

    與其明天開(kāi)始,不如現(xiàn)在行動(dòng),本文為你帶來(lái)幾個(gè)Java書(shū)寫的實(shí)際案例,對(duì)鞏固編程的基礎(chǔ)能力很有幫助,快來(lái)一起往下看看吧
    2022-03-03
  • 關(guān)于spring web-mvc衍生注解

    關(guān)于spring web-mvc衍生注解

    這篇文章主要介紹了關(guān)于spring web-mvc衍生注解,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-08-08
  • Java 中的語(yǔ)法糖,真甜

    Java 中的語(yǔ)法糖,真甜

    語(yǔ)法糖(Syntactic sugar),也叫做糖衣語(yǔ)法,是英國(guó)科學(xué)家發(fā)明的一個(gè)術(shù)語(yǔ),通常來(lái)說(shuō)使用語(yǔ)法糖能夠增加程序的可讀性,從而減少程序代碼出錯(cuò)的機(jī)會(huì).這篇文章主要介紹了Java 中的語(yǔ)法糖知識(shí),需要的朋友可以參考下
    2020-12-12
  • Java彈簧布局管理器使用方法詳解

    Java彈簧布局管理器使用方法詳解

    這篇文章主要介紹了Java彈簧布局管理器使用方法詳解,需要的朋友可以參考下
    2017-09-09
  • Idea如何查看Maven依賴樹(shù)

    Idea如何查看Maven依賴樹(shù)

    這篇文章主要介紹了Idea如何查看Maven依賴樹(shù)問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2024-04-04
  • Java Document生成和解析XML操作

    Java Document生成和解析XML操作

    這篇文章主要介紹了Java Document生成和解析XML操作,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2020-09-09
  • Java多線程中Lock鎖的使用小結(jié)

    Java多線程中Lock鎖的使用小結(jié)

    這篇文章主要介紹了Java多線程中Lock鎖的使用小結(jié),本節(jié)主要講了它的基本使用,大家可以舉一反三,試試什么條件下會(huì)導(dǎo)致死鎖,需要的朋友可以參考下
    2022-06-06
  • mybatis插件pageHelper實(shí)現(xiàn)分頁(yè)效果

    mybatis插件pageHelper實(shí)現(xiàn)分頁(yè)效果

    這篇文章主要為大家詳細(xì)介紹了mybatis插件pageHelper實(shí)現(xiàn)分頁(yè)效果,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2018-12-12
  • Mybatis輸入輸出映射及動(dòng)態(tài)SQL Review

    Mybatis輸入輸出映射及動(dòng)態(tài)SQL Review

    這篇文章主要介紹了Mybatis輸入輸出映射及動(dòng)態(tài)SQL Review,需要的朋友可以參考下
    2017-02-02
  • SpringBoot實(shí)現(xiàn)簡(jiǎn)易支付寶網(wǎng)頁(yè)支付功能

    SpringBoot實(shí)現(xiàn)簡(jiǎn)易支付寶網(wǎng)頁(yè)支付功能

    小編最近實(shí)現(xiàn)一個(gè)功能基于springboot程序的支付寶支付demo,非常不錯(cuò)適合初學(xué)者入門學(xué)習(xí)使用,今天把SpringBoot實(shí)現(xiàn)簡(jiǎn)易支付寶網(wǎng)頁(yè)支付功能的示例代碼分享給大家,感興趣的朋友參考下吧
    2021-10-10

最新評(píng)論