日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 前端技术 > javascript >内容正文

javascript

JavaScript学习笔记-JSON对象

發布時間:2025/3/15 javascript 46 豆豆
生活随笔 收集整理的這篇文章主要介紹了 JavaScript学习笔记-JSON对象 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
JSON 是一種用來序列化對象、數組、數值、字符串、布爾值和 null 的語法。它基于 JavaScript 語法,但是又有區別:一些 JavaScript 值不是 JSON,而某些 JSON 不是 JavaScript 值 ?JSON表示的對象和數組: 屬性名稱必須用雙引號包裹;最后一個屬性后面不能有逗號。 ?JSON表示的數值: 前導0不能使用;小數點后面至少有一個數字。 ?JSON表示的字符串: 只有有限的字符能夠被轉義;通常不允許控制字符; 但允許使用Unicode 行分隔符 (U+2028) 和段落分隔符 (U+2029) ; 字符串必須用雙引號括起來. 在Javascript中,下面的示例中 JSON.parse() 能夠正常解析但 SyntaxError 會出錯: JSON.parse() 方法可以將一個 JSON 字符串解析成為一個 JavaScript 值,在解析過程中,還可以選擇性的修改某些屬性的原始解析值, 語法:JSON.parse(text[, func]),從text字符串解析出的一個 Object; 如果指定了func函數,則解析出的 JavaScript 值(解析值)會經過一次轉換后才將被最終返回(返回值)。更具體點講就是:解析值本身以及它所包含的所有屬性,會按照一定的順序(從最最里層的屬性開始,一級級往外,最終到達頂層,也就是解析值本身)分別的去調func函數,在調用過程中,當前屬性所屬的對象會作為 this 值,當前屬性名和屬性值會分別作為第一個和第二個參數傳入func中。如果func返回 undefined,則當前屬性會從所屬對象中刪除,如果返回了其他值,則返回的值會成為當前屬性新的屬性值。當遍歷到最頂層的值(解析值)時,傳入 func 函數的參數會是空字符串 ""(因為此時已經沒有真正的屬性)和當前的解析值(有可能已經被修改過了),當前的 this 值會是 {"": 修改過的解析值},在編寫 func 函數時,要注意到這個特例。
JSON.stringify() 方法可以將任意的 JavaScript 值序列化成 JSON 字符串
語法: JSON.stringify(JSvalue [, replacer [, space] ]) ,返回JSON字符串 可選參數replacer,如果該參數是一個函數,則在序列化過程中,被序列化的值的每個屬性都會經過該函數的轉換和處理;如果該參數是一個數組,則只有包含在這個數組中的屬性名才會被序列化到最終的 JSON 字符串中; 可選參數space,用來控制結果字符串里面的間距。如果是一個數字, 則在字符串化時每一級別會比上一級別縮進多這個數字值的空格(最多10個空格);如果是一個字符串,則每一級別會比上一級別多縮進用該字符串(或該字符串的前十個字符) var s1 = JSON.stringify({a:1,b:2,c:3,d:4}, ['a','b','c'],'屬性:');
console.log(s1);
/*
{
屬性:"a": 1,
屬性:"b": 2,
屬性:"c": 3
}
*/ 關于序列化,有下面五點注意事項: 1.非數組對象的屬性不能保證以特定的順序出現在序列化后的字符串中。 2.布爾值、數字、字符串的包裝對象在序列化過程中會自動轉換成對應的原始值。 3.undefined、任意的函數以及 symbol 值,在序列化過程中會被忽略(出現在非數組對象的屬性值中時)或者被轉換成 null(出現在數組中時)。 4.所有以 symbol 為屬性鍵的屬性都會被完全忽略掉,即便 replacer 參數中強制指定包含了它們。 5.不可枚舉的屬性會被忽略 如果一個被序列化的對象擁有 toJSON 方法,那么該 toJSON 方法就會覆蓋該對象默認的序列化行為:不是那個對象被序列化,而是調用 toJSON 方法后的返回值會被序列化 var session = {
screens : [],
state : true,
toJSON:function() {
return{
screens_11:this.screens,
state_11: this.state
}
}
};
session.screens.push({"name":"screenA"});
session.screens.push({"name":"screenB"});

var jsonStr = JSON.stringify(session);
console.log(jsonStr);
//{"screens_11":[{"name":"screenA"},{"name":"screenB"}],"state_11":true}
var res = JSON.parse(jsonStr);
console.log(res);
//{ screens_11: [ { name: 'screenA' }, { name: 'screenB' } ],state_11: true } 完整的JSON語法如下:
JSON = null
or true or false
or JSONNumber
or JSONString
or JSONObject
or JSONArray
JSONNumber = - PositiveNumber
or PositiveNumber
PositiveNumber = DecimalNumber
or DecimalNumber . Digits
or DecimalNumber . Digits ExponentPart
or DecimalNumber ExponentPart
DecimalNumber = 0
or OneToNine Digits
ExponentPart = e Exponent
or E Exponent
Exponent = Digits
or + Digits
or - Digits
Digits = Digit
or Digits Digit
Digit = 0 through 9
OneToNine = 1 through 9
JSONString = ""
or " StringCharacters "
StringCharacters = StringCharacter
or StringCharacters StringCharacter
StringCharacter = any character
except " or \ or U+0000 through U+001F
or EscapeSequence
EscapeSequence = \" or \/ or \\ or \b or \f or \n or \r or \t
or \u HexDigit HexDigit HexDigit HexDigit
HexDigit = 0 through 9
or A through F
or a through f
JSONObject = { }
or { Members }
Members = JSONString : JSON
or Members , JSONString : JSON
JSONArray = [ ]
or [ ArrayElements ]
ArrayElements = JSON
or ArrayElements , JSON
空白字符可以出現在任意位置,但是數值類型的數字中間不能有空白字符,字符串中間不能隨意添加空白字符,因為添加的空白字符會被解釋為相應的字符值,從而引起錯誤。有效空白字符只包括制表符 (U+0009)、回車符 (U+000D)、換行符 (U+000A) 和空格 (U+0020) 。

轉載于:https://www.cnblogs.com/susufufu/p/5705800.html

總結

以上是生活随笔為你收集整理的JavaScript学习笔记-JSON对象的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。