首頁 web前端 js教程 轉義字元()對JavaScript中JSON.parse的影響概述_基礎知識

轉義字元()對JavaScript中JSON.parse的影響概述_基礎知識

May 16, 2016 pm 05:28 PM
json parse 轉義字符

按照ECMA262第五版中的解釋,JSON是一個提供了stringify和parse方法的內建對象,前者用於將js對象轉換為符合json標準的字串,後者將符合json標準的字串轉換為js對象。 json標準參考json.org。 (其實將符合json標準的字串轉換為js物件可以用eval,但是eval效能相對差且有安全隱患(會執行json字串中的程式碼),本文只寫JSON)
本文寫的是轉義字符對JSON.parse方法的影響。

一般來說在JSON.parse的參數包含轉移字元的時候會遇到兩次轉義的問題,其實第一次是字串本身的轉義,第二次是將真正轉為js物件的轉義。

舉例如下:
例子一:將字串'{"a":"b","b":"\\"}'傳遞給JSON.parse,先解析器擷取單引號括起來的字串時認為第一個轉義第二個第三個轉義第四個,也就是說實際可輸出字串是{"a":"b","b":"\"} (可透過console.log('{"a":"b","b":"\\"}')驗證),之後正式轉為js物件的時候還有一次轉義,也就是實際輸出字符轉中的第一個轉義第二個(此時只有兩個)。所以console.log(JSON.parse('{"a":"b","b":"\\"}') );輸出結果為Object {a: "b", b: ""},也是說實際顯示的資料為一個(實際可輸出一個說明在此之前還有一個)。
範例二:
var obj = {
a : "b",
b : "\",
c : {
b : "\",
a : {
b : "\"
}
}
};
var json_str = JSON.stringify(obj);
console.log( JSON.stringify(obj) ) ;
console.dir(JSON.parse(json_str));
console.dir(JSON.parse('{"a":"b","b":"\\","c": {"b":"\\","a":{"b":"\\"}}}'));輸出結果如下圖
pic
根據轉義規則,實際輸出一個在這個之前必定有一個。所以如上第一行輸出依照書寫來說為'{"a":"b","b":"\\","c":{"b":"\\","a":{" b":"\\"}}}',可透過第三條輸出來驗證。
總結,如果想在js物件中出現一個,需要在json字串中出現四個 。

對於其他的其他的特殊字符
1.雙引號("),如果正確出現雙引號應為\"
2.n,如想想出現正確的換行需要json字串中是 ,其實是先對n中的轉義,n變成了普通字符,在解析為js對象的時候n與之前的(只有一個了)被解釋為換行。如下的兩個與此類似。
3.r,
4.t,

本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

AI Hentai Generator

AI Hentai Generator

免費產生 AI 無盡。

熱門文章

R.E.P.O.能量晶體解釋及其做什麼(黃色晶體)
2 週前 By 尊渡假赌尊渡假赌尊渡假赌
倉庫:如何復興隊友
4 週前 By 尊渡假赌尊渡假赌尊渡假赌
Hello Kitty Island冒險:如何獲得巨型種子
3 週前 By 尊渡假赌尊渡假赌尊渡假赌

熱工具

記事本++7.3.1

記事本++7.3.1

好用且免費的程式碼編輯器

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

強大的PHP整合開發環境

Dreamweaver CS6

Dreamweaver CS6

視覺化網頁開發工具

SublimeText3 Mac版

SublimeText3 Mac版

神級程式碼編輯軟體(SublimeText3)

MySQL5.7和MySQL8.0的差別是什麼? MySQL5.7和MySQL8.0的差別是什麼? Feb 19, 2024 am 11:21 AM

MySQL5.7和MySQL8.0的差別是什麼?

golang WebSocket與JSON的結合:實現資料傳輸與解析 golang WebSocket與JSON的結合:實現資料傳輸與解析 Dec 17, 2023 pm 03:06 PM

golang WebSocket與JSON的結合:實現資料傳輸與解析

PHP 數組轉 JSON 的效能最佳化技巧 PHP 數組轉 JSON 的效能最佳化技巧 May 04, 2024 pm 06:15 PM

PHP 數組轉 JSON 的效能最佳化技巧

Pandas使用教學:讀取JSON檔案的快速入門 Pandas使用教學:讀取JSON檔案的快速入門 Jan 13, 2024 am 10:15 AM

Pandas使用教學:讀取JSON檔案的快速入門

使用golang中的json.MarshalIndent函數將結構體轉換為格式化的JSON字串 使用golang中的json.MarshalIndent函數將結構體轉換為格式化的JSON字串 Nov 18, 2023 pm 01:59 PM

使用golang中的json.MarshalIndent函數將結構體轉換為格式化的JSON字串

Jackson庫中註解如何控制JSON序列化和反序列化? Jackson庫中註解如何控制JSON序列化和反序列化? May 06, 2024 pm 10:09 PM

Jackson庫中註解如何控制JSON序列化和反序列化?

C#開發中如何處理XML和JSON資料格式 C#開發中如何處理XML和JSON資料格式 Oct 09, 2023 pm 06:15 PM

C#開發中如何處理XML和JSON資料格式

使用MyBatis中的小於等於轉義字元方法是什麼? 使用MyBatis中的小於等於轉義字元方法是什麼? Feb 24, 2024 am 11:12 AM

使用MyBatis中的小於等於轉義字元方法是什麼?

See all articles