這期內(nèi)容當(dāng)中小編將會(huì)給大家?guī)碛嘘P(guān)什么是json的轉(zhuǎn)義字符,文章內(nèi)容豐富且以專業(yè)的角度為大家分析和敘述,閱讀完這篇文章希望大家可以有所收獲。
成都一家集口碑和實(shí)力的網(wǎng)站建設(shè)服務(wù)商,擁有專業(yè)的企業(yè)建站團(tuán)隊(duì)和靠譜的建站技術(shù),十載企業(yè)及個(gè)人網(wǎng)站建設(shè)經(jīng)驗(yàn) ,為成都成百上千客戶提供網(wǎng)頁(yè)設(shè)計(jì)制作,網(wǎng)站開發(fā),企業(yè)網(wǎng)站制作建設(shè)等服務(wù),包括成都營(yíng)銷型網(wǎng)站建設(shè),品牌網(wǎng)站設(shè)計(jì),同時(shí)也為不同行業(yè)的客戶提供成都網(wǎng)站設(shè)計(jì)、做網(wǎng)站的服務(wù),包括成都電商型網(wǎng)站制作建設(shè),裝修行業(yè)網(wǎng)站制作建設(shè),傳統(tǒng)機(jī)械行業(yè)網(wǎng)站建設(shè),傳統(tǒng)農(nóng)業(yè)行業(yè)網(wǎng)站制作建設(shè)。在成都做網(wǎng)站,選網(wǎng)站制作建設(shè)服務(wù)商就選創(chuàng)新互聯(lián)。轉(zhuǎn)義字符串(Escape Sequence)也稱字符實(shí)體(Character Entity)。在HTML中,定義轉(zhuǎn)義字符串的原因有兩個(gè):第一個(gè)原因是像“<”和“>”這類符號(hào)已經(jīng)用來表示HTML標(biāo)簽,因此就不能直接當(dāng)做文本中的符號(hào)來使用。為了在HTML文檔中使用這些符號(hào),就需要定義它的轉(zhuǎn)義字符串。當(dāng)解釋程序遇到這類字符串時(shí)就把它解釋為真實(shí)的字符。在輸入轉(zhuǎn)義字符串時(shí),要嚴(yán)格遵守字母大小寫的規(guī)則。第二個(gè)原因是,有些字符在ASCII字符集中沒有定義,因此需要使用轉(zhuǎn)義字符串來表示。
其實(shí)所有編程語(yǔ)言,擁有轉(zhuǎn)義字符的原因基本上是兩點(diǎn):
一、使用轉(zhuǎn)義字符來表示字符集中定義的字符,比如ASCll里面的控制字符及回車換行等字符,這些字符都沒有現(xiàn)成的文字代號(hào)。所以只能用轉(zhuǎn)義字符來表示 。
二、某一些特定的字符在編輯語(yǔ)言中被定義為特殊用途的字符。
這些字符由于被定義為特殊用途,它們失去了原有的意義。比如說Html中,<被HTML定義為標(biāo)簽的開始,所以當(dāng)我們轉(zhuǎn)入<時(shí),HTML就會(huì)把它當(dāng)作為開始,而不是當(dāng)作一個(gè)<來看待。再如PHP 的雙引號(hào)("),被PHP定義為字符串的外圍標(biāo)簽,所以如果你在一對(duì)雙引號(hào)里面,還想要使用雙引號(hào),只能使用轉(zhuǎn)義字符了。不然PHP就會(huì)報(bào)錯(cuò)了。
從上面也可以看出轉(zhuǎn)義無非是兩種情況:
1:將普通字符轉(zhuǎn)為特殊用途,一般是編程語(yǔ)言中,用于表示不能直接顯示的字符,比如后退鍵,回車鍵,等。
2:用來將特殊意義的字符轉(zhuǎn)換回它原來的意義。一般用在正則表達(dá)式中。還有有些腳本語(yǔ)言是弱類型,有些語(yǔ)言比如html 并不是編程語(yǔ)言,而是標(biāo)記語(yǔ)言,有些語(yǔ)言只有一種類型 比如shell 腳本語(yǔ)言,這些語(yǔ)言中字符串都不加引號(hào)” ” ,或者可以不加引號(hào)“ ”,所以有時(shí)候需要轉(zhuǎn)義字符說明某字符此時(shí)的身份是普通字符,而不是有特殊意義的元字符。
另外出于網(wǎng)站的安全。在數(shù)據(jù)寫入數(shù)據(jù)庫(kù)前,都會(huì)使用轉(zhuǎn)義字符(函數(shù))對(duì)一些敏感字符進(jìn)行轉(zhuǎn)義。這樣做可以避免一些別有用心的人利用特殊符號(hào)的注入攻擊。
JSon串在被串行化后保存在文件中,讀取字符串時(shí),是不能直接拿來用JSON.parse()解析為JSON 對(duì)象的。因?yàn)樗且粋€(gè)字符串,不是一個(gè)合法的JSON對(duì)象格式。
例如下面的JSON串保存在文件中,讀出來不能直接解析:
“{\"resourceId\":\"dfead70e4ec5c11e43514000ced0cdcaf\",\"properties\":{\"process_id\":\"process4\",\"name\":\"\",\"documentation\":\"\",\"processformtemplate\":\"\"}}"
這個(gè)串如果出現(xiàn)在代碼中是沒有問題的,因?yàn)榉葱备芫捅硎巨D(zhuǎn)義,但如果從文本文件中直接讀出來就是這個(gè)樣子,則不能直接用JSON.parse()進(jìn)行解析,需要反串行化,消除掉反斜杠。有些programmer喜歡自己寫一個(gè)工具類來做這樣的事情,但已經(jīng)有方便快捷的工具類可以來做這件事情,毋需我們重復(fù)發(fā)明車輪子。
可以直接使用Apache 的 common.lang工具包(使用工具類:org.apache.commons.lang.StringEscapeUtils)。
例子如下:
public void test(){ String str1 = "{\"resourceId\":\"dfead70e4ec5c11e43514000ced0cdcaf\",\"properties\":{\"process_id\":\"process4 "+"\",\"name\":\"\",\"documentation\":\"\",\"processformtemplate\":\"\"}}"; String tmp = StringEscapeUtils.unescapeJavaScript(str1); System.out.println("tmp:" + tmp); }
輸出:
tmp:{"resourceId":"51ad70e41c5c11e88514000c290cdcfa","properties":{"process_id":"process4","name":"","documentation":"","processformtemplate":""}}
上述就是小編為大家分享的什么是json的轉(zhuǎn)義字符了,如果剛好有類似的疑惑,不妨參照上述分析進(jìn)行理解。如果想知道更多相關(guān)知識(shí),歡迎關(guān)注創(chuàng)新互聯(lián)網(wǎng)站制作公司行業(yè)資訊頻道。
當(dāng)前名稱:什么是json的轉(zhuǎn)義字符-創(chuàng)新互聯(lián)
路徑分享:http://jinyejixie.com/article26/dpogcg.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供服務(wù)器托管、網(wǎng)站排名、外貿(mào)網(wǎng)站建設(shè)、網(wǎng)站設(shè)計(jì)公司、靜態(tài)網(wǎng)站、虛擬主機(jī)
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)
猜你還喜歡下面的內(nèi)容