Java或Scala寇蚊,如何將\x22這樣的字符轉(zhuǎn)換為字符串笔时?

介紹


最近涉及 Nginx 輸出的埋點(diǎn)日志,實(shí)時(shí)接入 Kafka仗岸,我需要實(shí)時(shí)解析 Kafka 中埋點(diǎn)日志允耿,但是在解析過程中,出現(xiàn) \x22 這樣的字符扒怖,使我不能將字符串解析成 JSON 對(duì)象较锡,本著解決問題的想法進(jìn)行了研究,本文作為個(gè)人筆記,可供大家參考盗痒。

問題說明


  1. 問題字符串樣例
{\x22documentReferer\x22:\x22http:\x5C/\x5C/pikabu.ru\x5C/freshitems.php\x22}

上述字符串是不能直接解析成 json 字符串的蚂蕴,錯(cuò)誤如下:

Exception in thread "main" com.alibaba.fastjson.JSONException: illegal identifier : \pos 1, json : {\x22documentReferer\x22:\x22http:\x5C/\x5C/pikabu.ru\x5C/freshitems.php\x22}
    at com.alibaba.fastjson.parser.JSONLexerBase.scanSymbolUnQuoted(JSONLexerBase.java:829)
    at com.alibaba.fastjson.parser.DefaultJSONParser.parseObject(DefaultJSONParser.java:286)
    at com.alibaba.fastjson.parser.DefaultJSONParser.parse(DefaultJSONParser.java:1356)
    at com.alibaba.fastjson.parser.DefaultJSONParser.parse(DefaultJSONParser.java:1322)
    at com.alibaba.fastjson.JSON.parse(JSON.java:152)
    at com.alibaba.fastjson.JSON.parse(JSON.java:162)
    at com.alibaba.fastjson.JSON.parse(JSON.java:131)
    at com.alibaba.fastjson.JSON.parseObject(JSON.java:223)
    at com.test.JsonDataParseTest$.main(JsonDataParseTest.scala:19)
    at com.test.JsonDataParseTest.main(JsonDataParseTest.scala)
  1. \x22 是怎么產(chǎn)生的
    \x22 實(shí)際上是 Nginx 產(chǎn)生的,它的真實(shí)值可以是 " 或者 '俯邓,如下:
{"documentReferer":"http:\x5C/\x5C/pikabu.ru\x5C/freshitems.php"}

由于本著麻煩別人骡楼,不如麻煩自己的原則,忽略產(chǎn)生的原因稽鞭,針對(duì)字符串本身的問題鸟整,進(jìn)行解決。

解決方案


  1. 將 \x22 替換成 " 或者 '
jsonData.replaceAll("\\x22", "\"")
  1. 使用提三方 jar 如 commons-lang3
    \x 用于在 python 和其他語言中轉(zhuǎn)義 ASCII 字符朦蕴,在 Scala 和 Java 中篮条,可以使用 \u`` 轉(zhuǎn)義 Unicode 字符。由于 ASCII 是 Unicode 的一個(gè)子集吩抓,可以使用unescapeJava方法 (在 StringEscapeUtils 中 )涉茧,還有一些簡(jiǎn)單的更換以及添加\u``` 2個(gè)前導(dǎo)零一起轉(zhuǎn)義字符。
    maven pom.xml 引用:
<dependency>
            <groupId>org.apache.commons</groupId>
            <artifactId>commons-lang3</artifactId>
            <version>3.4</version>
            <!--<scope>provided</scope>-->
</dependency>

示例代碼:

import org.apache.commons.lang3.StringEscapeUtils
StringEscapeUtils.unescapeJava(x.replaceAll("""\\x""", """\\u00"""))

原文

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末琴拧,一起剝皮案震驚了整個(gè)濱河市降瞳,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌蚓胸,老刑警劉巖挣饥,帶你破解...
    沈念sama閱讀 217,509評(píng)論 6 504
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異沛膳,居然都是意外死亡扔枫,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,806評(píng)論 3 394
  • 文/潘曉璐 我一進(jìn)店門锹安,熙熙樓的掌柜王于貴愁眉苦臉地迎上來短荐,“玉大人倚舀,你說我怎么就攤上這事∪趟危” “怎么了痕貌?”我有些...
    開封第一講書人閱讀 163,875評(píng)論 0 354
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)糠排。 經(jīng)常有香客問我舵稠,道長(zhǎng),這世上最難降的妖魔是什么入宦? 我笑而不...
    開封第一講書人閱讀 58,441評(píng)論 1 293
  • 正文 為了忘掉前任哺徊,我火速辦了婚禮,結(jié)果婚禮上乾闰,老公的妹妹穿的比我還像新娘落追。我一直安慰自己,他們只是感情好涯肩,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,488評(píng)論 6 392
  • 文/花漫 我一把揭開白布轿钠。 她就那樣靜靜地躺著,像睡著了一般宽菜。 火紅的嫁衣襯著肌膚如雪谣膳。 梳的紋絲不亂的頭發(fā)上竿报,一...
    開封第一講書人閱讀 51,365評(píng)論 1 302
  • 那天铅乡,我揣著相機(jī)與錄音,去河邊找鬼烈菌。 笑死阵幸,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的芽世。 我是一名探鬼主播挚赊,決...
    沈念sama閱讀 40,190評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼济瓢!你這毒婦竟也來了荠割?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,062評(píng)論 0 276
  • 序言:老撾萬榮一對(duì)情侶失蹤旺矾,失蹤者是張志新(化名)和其女友劉穎蔑鹦,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體箕宙,經(jīng)...
    沈念sama閱讀 45,500評(píng)論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡嚎朽,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,706評(píng)論 3 335
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了柬帕。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片哟忍。...
    茶點(diǎn)故事閱讀 39,834評(píng)論 1 347
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡狡门,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出锅很,到底是詐尸還是另有隱情其馏,我是刑警寧澤,帶...
    沈念sama閱讀 35,559評(píng)論 5 345
  • 正文 年R本政府宣布爆安,位于F島的核電站尝偎,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏鹏控。R本人自食惡果不足惜致扯,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,167評(píng)論 3 328
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望当辐。 院中可真熱鬧抖僵,春花似錦、人聲如沸缘揪。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,779評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽找筝。三九已至蹈垢,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間袖裕,已是汗流浹背曹抬。 一陣腳步聲響...
    開封第一講書人閱讀 32,912評(píng)論 1 269
  • 我被黑心中介騙來泰國(guó)打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留急鳄,地道東北人谤民。 一個(gè)月前我還...
    沈念sama閱讀 47,958評(píng)論 2 370
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像疾宏,于是被迫代替她去往敵國(guó)和親张足。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,779評(píng)論 2 354

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

  • 放下秋天坎藐,轉(zhuǎn)向生活 是要放下的 是要轉(zhuǎn)向的 不翻書了为牍,不寫詩了 唯什么美,自什么由 不可能復(fù)活了 怎么可能岩馍? 我到...
    牛懷良閱讀 169評(píng)論 0 6
  • 生命總是在意了滄桑 就沒有了那份該有的笑容 花兒盛開從來沒有為凋落而不再美麗 生活因此不會(huì)因?yàn)樨?fù)累而放下勇氣 愛的...
    田萍閱讀 152評(píng)論 0 3
  • 昨天我還專門的問過了一次父親碉咆,我六爺爺是不是在我五歲的時(shí)候逝世的。當(dāng)時(shí)父親停下手中的活兼雄,想了一會(huì)兒告訴我吟逝,...
    丁聰閱讀 348評(píng)論 3 3
  • 知道自己在渴望什麼嗎是否有勇氣追逐心中的渴望有沒有將挫折作為一次學(xué)習(xí)和成長(zhǎng)的機(jī)會(huì)我是否愿意冒險(xiǎn)為了愛,為了夢(mèng)想赦肋,為...
    真承閱讀 198評(píng)論 0 1