成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

JS系列之JSON

Miracle_lihb / 2771人閱讀

摘要:用于轉(zhuǎn)換結(jié)果的函數(shù)或數(shù)組。作為函數(shù),它有兩個(gè)參數(shù),鍵值都會被序列化。如果返回一個(gè)該字符串作為屬性值被添加入。如果一個(gè)被序列化的對象擁有方法,那么該方法就會覆蓋該對象默認(rèn)的序列化行為。如果返回它接收的相同值,則不修改對應(yīng)屬性值。

JSON 值

JSON 值可以是:

數(shù)字(整數(shù)或浮點(diǎn)數(shù))

字符串(在雙引號中)

邏輯值(true 或 false)

數(shù)組(在中括號中)

對象(在大括號中)

null

JSON 文件

JSON 文件的文件類型是 ".json"
JSON 文本的 MIME 類型是 "application/json"

規(guī)則

對象和數(shù)組

屬性名稱必須是雙引號括起來的字符串

最后一個(gè)屬性后不能有逗號

數(shù)值

禁止出現(xiàn)前導(dǎo)零( JSON.stringify 方法自動忽略前導(dǎo)零,而在 JSON.parse 方法中將會拋出 SyntaxError)

如果有小數(shù)點(diǎn), 則后面至少跟著一位數(shù)字

字符串

字符串必須用雙引號括起來

方法 JSON.stringify
JSON.stringify(value[, replacer[, space]])

replacer:
可選。用于轉(zhuǎn)換結(jié)果的函數(shù)或數(shù)組。

var str = {"name":"haha", "age":20};

JSON.stringify(str);   // {"name":"haha","age":20}

作為函數(shù),它有兩個(gè)參數(shù),鍵(key)值(value)都會被序列化。

過濾函數(shù)以對象中的每一個(gè)屬性和值作為輸入,返回值有以下幾種情況:

如果返回一個(gè) Number, 轉(zhuǎn)換成相應(yīng)的字符串被添加入JSON字符串。

如果返回一個(gè) String, 該字符串作為屬性值被添加入JSON。

如果返回一個(gè) Boolean, "true" 或者 "false"被作為屬性值被添加入JSON字符串

返回undefined表示忽略該屬性

返回對象將會觸發(fā)遞歸調(diào)用知道遇到基本類型的屬性

返回?zé)o法stringify的值將會被忽略

JSON.stringify(str, function(key, val){
  console.log("key is ", key);
  console.log("val is  ", typeof(val));
  return val;
}

//======================
key is 
val is object
key is name
val is string
key is age
val is number

// {"name":"haha","age":20}
function replacer(key, value) {
  if (typeof value === "string") {
    return undefined;
  }
  return value;
}

var foo = {foundation: "Mozilla", model: "box", week: 45, transport: "car", month: 7};
var jsonString = JSON.stringify(foo, replacer); 
// {"week":45,"month":7}

如果 replacer 是一個(gè)數(shù)組,則僅轉(zhuǎn)換該數(shù)組中具有鍵值的成員。成員的轉(zhuǎn)換順序與鍵在數(shù)組中的順序一樣。

JSON.stringify(str, ["name", "haha", "kk"]);

// {"name":"haha"}

space:
可選,文本添加縮進(jìn)、空格和換行符,如果 space 是一個(gè)數(shù)字,則返回值文本在每個(gè)級別縮進(jìn)指定數(shù)目的空格,如果 space 大于 10,則文本縮進(jìn) 10 個(gè)空格。space 也可以使用非數(shù)字,如:t。

JSON.stringify(str, null, 4);

//
{
    "name": "haha",
    "age": 20
}
toJSON()

如果一個(gè)被序列化的對象擁有 toJSON 方法,那么該 toJSON 方法就會覆蓋該對象默認(rèn)的序列化行為。

var data = {
  name:"niuzai",
  info:{
    age:18,
    sex:"male"
  },
  toJSON:function(){
    return "by toJSON";
  }
};

JSON.stringify(data);
//""by toJSON"";
JSON.parse()
JSON.parse(text[, reviver])

reviver:
可選,一個(gè)函數(shù),它用來轉(zhuǎn)換已經(jīng)被從text字符串轉(zhuǎn)為對象的對象,規(guī)則如下:

如果reviver返回一個(gè)有效值,則對應(yīng)的屬性值將替換為轉(zhuǎn)換后的值。

如果reviver返回它接收的相同值,則不修改對應(yīng)屬性值。

如果reviver返回undefined,則刪除對應(yīng)的屬性

function reviver(key,value){
  if(key=="webName"){
    return "antzone";
  }
  return value;
}
var jsonStr="{"webName":"螞蟻部落","url":"softwhy.com","age":"2"}";
var obj=JSON.parse(jsonStr,reviver);
console.log(obj);

//
{
    age: "2",
    url: "softwhy.com",
    webName: "antzone"
}

文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請注明本文地址:http://systransis.cn/yun/99289.html

相關(guān)文章

  • 【從零入門系列-5】Spring Boot 前端展示

    摘要:務(wù)必在之前引入最新的核心文件為了偷懶,我們這里引入的第三方庫文件都是采用的方式,也可以選擇把庫下載到本地然后再引用。 文章系列 【從零入門系列-0】Spring Boot 之 Hello World 【從零入門系列-1】Spring Boot 之 程序結(jié)構(gòu)設(shè)計(jì)說明 【從零入門系列-2】Spring Boot 之 數(shù)據(jù)庫實(shí)體類 【從零入門系列-3】Spring Boot 之 數(shù)據(jù)庫操作...

    freewolf 評論0 收藏0
  • 【從零入門系列-5】Spring Boot 前端展示

    摘要:務(wù)必在之前引入最新的核心文件為了偷懶,我們這里引入的第三方庫文件都是采用的方式,也可以選擇把庫下載到本地然后再引用。 文章系列 【從零入門系列-0】Spring Boot 之 Hello World 【從零入門系列-1】Spring Boot 之 程序結(jié)構(gòu)設(shè)計(jì)說明 【從零入門系列-2】Spring Boot 之 數(shù)據(jù)庫實(shí)體類 【從零入門系列-3】Spring Boot 之 數(shù)據(jù)庫操作...

    Mr_houzi 評論0 收藏0
  • JavaScript系列--淺析JavaScript解析賦值、淺拷貝和深拷貝的區(qū)別

    摘要:它將返回目標(biāo)對象。有些文章說是深拷貝,其實(shí)這是不正確的。深拷貝相比于淺拷貝速度較慢并且花銷較大??截惽昂髢蓚€(gè)對象互不影響。使用深拷貝的場景完全改變變量之后對沒有任何影響,這就是深拷貝的魔力。 一、賦值(Copy) 賦值是將某一數(shù)值或?qū)ο筚x給某個(gè)變量的過程,分為: 1、基本數(shù)據(jù)類型:賦值,賦值之后兩個(gè)變量互不影響 2、引用數(shù)據(jù)類型:賦址,兩個(gè)變量具有相同的引用,指向同一個(gè)對象,相互之間有...

    laznrbfe 評論0 收藏0
  • webpack系列plugin及簡單的使用

    摘要:系列之及簡單的使用一有什么用是核心功能,通過插件可以實(shí)現(xiàn)所不能完成的復(fù)雜功能,使用豐富的自定義,可以控制編譯流程的每個(gè)環(huán)節(jié),實(shí)現(xiàn)對的自定義功能擴(kuò)展。三使用在配置文件中,向?qū)傩詡魅雽?shí)例即可。 webpack系列之plugin及簡單的使用 一.plugin有什么用 plugin是webpack核心功能,通過plugin(插件)webpack可以實(shí)現(xiàn)loader所不能完成的復(fù)雜功能,使用p...

    TesterHome 評論0 收藏0
  • 前端代碼風(fēng)格自動化系列(三)Lint-staged

    摘要:在我們介紹了之后,來看一個(gè)前端文件過濾的工具,代碼的格式化肯定會涉及到文件系統(tǒng),一般工具會首先讀取文件,格式化操作之后,重新寫入。 在我們介紹了Husky、Commitlint之后,來看一個(gè)前端文件過濾的工具Lint-staged,代碼的格式化肯定會涉及到文件系統(tǒng),一般工具會首先讀取文件,格式化操作之后,重新寫入。對于較大型的項(xiàng)目,文件眾多,首先遇到的就是性能問題,雖然如Eslint之...

    zzir 評論0 收藏0

發(fā)表評論

0條評論

Miracle_lihb

|高級講師

TA的文章

閱讀更多
最新活動
閱讀需要支付1元查看
<