首頁  >  文章  >  web前端  >  json的轉義字元是什麼

json的轉義字元是什麼

(*-*)浩
(*-*)浩原創
2019-06-01 13:32:399443瀏覽

轉義字串(Escape Sequence)也稱為字元實體(Character Entity)。在HTML中,定義轉義字串的原因有兩個:第一個原因是像「<」和「>」這類符號已經用來表示HTML標籤,因此就不能直接當做文字中的符號來使用。為了在HTML文件中使用這些符號,就需要定義它的轉義字串。當解釋程式遇到這類字串時就把它解釋為真實的字元。在輸入轉義字串時,要嚴格遵守字母大小寫的規則。第二個原因是,有些字元在ASCII字元集中沒有定義,因此需要使用轉義字串來表示。

json的轉義字元是什麼

其實所有程式語言,擁有轉義字符的原因基本上是兩點:

一、使用轉義字符來表示字符集中定義的字符,例如ASCll裡面的控製字符及回車換行等字符,這些字符都沒有現成的文字代號。所以只能用轉義字元來表示 。

二、某一些特定的字元在編輯語言中被定義為特殊用途的字元。

這些字元由於被定義為特殊用途,它們失去了原有的意義。比如說Html中,<被HTML定義為標籤的開始,所以當我們轉入<時,HTML就會把它當作為開始,而不是當作一個<來看待。再如PHP 的雙引號("),被PHP定義為字串的外圍標籤,所以如果你在一對雙引號裡面,還想要使用雙引號,只能使用轉義字符了。不然PHP就會報錯了。

從上面也可以看出轉義無非是兩種情況:

1:將普通字元轉為特殊用途,一般是程式語言中,用於表示不能直接顯示的字符,例如後退鍵,回車鍵,等。

2:用來將特殊意義的字符轉換回它原來的意義。一般用在正則表達式中。還有有些腳本語言是弱型,有些語言例如html 並不是程式語言,而是標記語言,有些語言只有一種類型例如shell 腳本語言,這些語言中字串都不加引號” ” ,或者可以不加引號“ ”,所以有時需要轉義字符說明某字符此時的身份是普通字符,而不是有特殊意義的元字符。

另外出於網站的安全。在數據寫入數據庫之前,都會使用轉義字元(函數)對一些敏感字元進行轉義。這樣做可以避免一些別有用心的人利用特殊符號的注入攻擊。

JSon串在被串列化後保存在檔案中,讀取字串時,是不能直接拿來用JSON.parse()解析為JSON  物件的。因為它是一個字串,不是一個合法的JSON物件格式。

例如下面的JSON字串保存在檔案中,讀出來不能直接解析:

“{\"resourceId\":\"dfead70e4ec5c11e43514000ced0cdcaf\",\"properties\":{\"process_id\":\"process4\",\"name\":\"\",\"documentation\":\"\",\"processformtemplate\":\"\"}}"

這個字串如果出現在程式碼中是沒有問題的,因為反斜線就表示轉義,但如果從文字檔中直接讀出來就是這個樣子,則不能直接用JSON.parse()進行解析,需要反串行化,消除掉反斜杠。有些programmer喜歡自己寫一個工具類來做這樣的事情,但已經有方便快速的工具類別可以來做這件事情,毋需我們重複發明車輪子。

可以直接使用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的轉義字元是什麼的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
上一篇:微信js是什麼下一篇:微信js是什麼