按照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,

控制json序列化/反序列化1.@JsonIgnoreProperties的用法@JsonIgnoreProperties(value={"prop1","prop2"})用来修饰Pojo类,在序列化和反序列化的时候忽略指定的属性,可以忽略一个或多个属性.@JsonIgnoreProperties(ignoreUnknown=true)用来修饰Pojo类,在反序列化的时候忽略那些无法被设置的属性,包括无法在构造子设置和没有对应的setter方法.2.@Js

PHP作为一种常见的编程语言,在web开发中使用广泛,其与前端交互的方式也多种多样。其中,输出Json数据是一种常见的交互方式,但有时候会碰到Json无法解析的问题。为什么会出现无法解析的情况呢?下面列举了几个可能的原因。

如何在Go语言中使用正则表达式转义特殊字符引言:正则表达式是一种强大的字符串匹配工具,在处理文本时非常有用。但是,在某些情况下,我们可能需要在正则表达式中使用一些特殊字符,如"+"、"*"等,这些字符在正则表达式中具有特殊的含义。为了使用这些特殊字符的字面意义,我们需要对它们进行转义。本文将介绍如何在Go语言中使用正则表达式转义特殊字符,并提供代码示例进行说

当我们处理数据时经常会遇到将XML格式转换为JSON格式的需求。PHP有许多内置函数可以帮助我们执行这个操作。在本文中,我们将讨论将XML格式转换为JSON格式的不同方法。

本篇文章给大家带来了关于JWT的相关知识,其中主要介绍了什么是JWT?JWT的原理以及用法是什么?感兴趣的朋友,下面一起来看一下吧,希望对大家有帮助。

在MyBatis中使用小于等于转义字符是一个常见的需求,在实际开发过程中经常会遇到这样的情况。下面我们将详细介绍如何在MyBatis中使用小于等于转义字符,并提供具体的代码示例。首先,我们需要明确小于等于转义字符在SQL语句中的表示方式。在SQL语句中,小于等于操作符通常以“

怎么使用Node将Excel转为JSON?下面本篇文章给大家介绍一下Node中转换Excel成JSON的方法,希望对大家有所帮助!

json模块json用于不同语言之间的数据交换,比如C和Python之间等等,即可跨语言。而pickle只能用于python与python之间数据交换。序列化与反序列化我们把对象(变量)从内存中变成可存储或传输的过程称之为序列化,在Python中叫pickling,在其他语言中也被称之为serialization,marshalling,flattening等等,都是一个意思。序列化之后,就可以把序列化后的内容写入磁盘,或者通过网络传输到别的机器上。反过来,把变量内容从序列化的对象重新读到内存里


熱AI工具

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

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

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

AI Hentai Generator
免費產生 AI 無盡。

熱門文章

熱工具

Atom編輯器mac版下載
最受歡迎的的開源編輯器

Dreamweaver Mac版
視覺化網頁開發工具

VSCode Windows 64位元 下載
微軟推出的免費、功能強大的一款IDE編輯器

SAP NetWeaver Server Adapter for Eclipse
將Eclipse與SAP NetWeaver應用伺服器整合。

EditPlus 中文破解版
體積小,語法高亮,不支援程式碼提示功能