欧美一区二区三区老妇人-欧美做爰猛烈大尺度电-99久久夜色精品国产亚洲a-亚洲福利视频一区二区

javascript中json.stringify()有什么用

小編給大家分享一下javascript中json.stringify()有什么用,相信大部分人都還不怎么了解,因此分享這篇文章給大家參考一下,希望大家閱讀完這篇文章后大有收獲,下面讓我們一起去了解一下吧!

目前創(chuàng)新互聯(lián)公司已為1000多家的企業(yè)提供了網(wǎng)站建設(shè)、域名、網(wǎng)絡(luò)空間、網(wǎng)站托管運營、企業(yè)網(wǎng)站設(shè)計、宣威網(wǎng)站維護(hù)等服務(wù),公司將堅持客戶導(dǎo)向、應(yīng)用為本的策略,正道將秉承"和諧、參與、激情"的文化,與客戶和合作伙伴齊心協(xié)力一起成長,共同發(fā)展。

json.stringify()用于將JavaScript對象或值轉(zhuǎn)換為JSON字符串,如果指定了一個replacer函數(shù),則可以選擇性地替換值,或者指定的replacer是數(shù)組,則可選擇性地僅包含數(shù)組指定的屬性。

JavaScript JSON.stringify()

JSON.stringify() 方法用于將 JavaScript 值轉(zhuǎn)換為 JSON 字符串。

語法

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

參數(shù)說明:

value:必需, 要轉(zhuǎn)換的 JavaScript 值(通常為對象或數(shù)組)。

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

  • 如果 replacer 為函數(shù),則 JSON.stringify 將調(diào)用該函數(shù),并傳入每個成員的鍵和值。使用返回值而不是原始值。如果此函數(shù)返回 undefined,則排除成員。根對象的鍵是一個空字符串:""。

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

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

返回值:

返回包含 JSON 文本的字符串。

實例說明

注意:以下的輸出結(jié)果都是string類型的,為了容易看就沒有用單引號‘’表明是字符串類型

1、只有一個參數(shù)

參數(shù)為對象:

var students = new Array();
students[0] = "pika";
students[1] = "hello";
students[2] = "hey";
var json = JSON.stringify(students);
alert(json);

輸出結(jié)果:

["pika","hello","hey"]

如果不用JSON.stringify()函數(shù),直接alert(students),那么

輸出結(jié)果:

pika,hello,hey

從這里到對比可以比較直觀的看出JSON.stringify()函數(shù)的作用啦

看一下其他例子:

JSON.stringify({});                        // 輸出結(jié)果:{}
JSON.stringify(true);                      // 輸出結(jié)果:true
JSON.stringify("foo");                     // 輸出結(jié)果:"foo"
JSON.stringify([1, "false", false]);       // 輸出結(jié)果:[1,"false",false]
JSON.stringify({ x: 5 });                  // 輸出結(jié)果:{"x":5}

JSON.stringify({x: 5, y: 6});              
//輸出結(jié)果:{"x":5,"y":6}

JSON.stringify([new Number(1), new String("false"), new Boolean(false)]); 
//輸出結(jié)果:[1,"false",false]

從這些例子中可以看出:布爾值、數(shù)字、字符串的包裝對象在序列化過程中會自動轉(zhuǎn)換成對應(yīng)的原始值

再看一下其他例子:

JSON.stringify({x: undefined, y: Object, z: Symbol("")}); 
// 輸出結(jié)果:{}

JSON.stringify([undefined, Object, Symbol("")]);          
// 輸出結(jié)果:[null,null,null]'

JSON.stringify({[Symbol("foo")]: "foo"});                 
// 輸出結(jié)果:{}

JSON.stringify({[Symbol.for("foo")]: "foo"}, [Symbol.for("foo")]);
// 輸出結(jié)果:{}

JSON.stringify(
    {[Symbol.for("foo")]: "foo"}, 
    function (k, v) {
        if (typeof k === "symbol"){
            return "a symbol";
        }
    }
);
//輸出結(jié)果:undefined

從這些例子中可以看出:undefined、任意的函數(shù)以及 symbol 值,在序列化過程中會被忽略(出現(xiàn)在非數(shù)組對象的屬性值中時)或者被轉(zhuǎn)換成 null(出現(xiàn)在數(shù)組中時)

再看最后一個例子

JSON.stringify( 
    Object.create(
        null, 
        { 
            x: { value: 'x', enumerable: false }, 
            y: { value: 'y', enumerable: true } 
        }
    )
);

從例子中可以看出:不可枚舉的屬性會被忽略

2、有兩個參數(shù),第二個參數(shù)為函數(shù)

函數(shù)例子:

 function replacer(key, value) {
  if (typeof value === "string") {
    return undefined;
  }
  return value;
}

可以看出有一個key值,一個value值,還記得一開始說的第二個參數(shù)作key值嗎?

實例:

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);
//輸出結(jié)果:{"week":45,"month":7}

就是把第一個值傳去函數(shù)進(jìn)行相關(guān)的處理

2、有兩個參數(shù),第二個參數(shù)為數(shù)組

第一個參數(shù)為數(shù)組

var students = new Array();
students[0] = "pika";
students[1] = "hello";
students[2] = "hey";
var stu= new Array();
stu[0] = "how";
stu[1] = "are";
stu[2] = "u";
var json = JSON.stringify(students,stu);
alert(json);
//輸出結(jié)果:["pika","hello","hey"]

結(jié)果是只有第一個值序列化了,第二個被忽略了

第一個參數(shù)為對象

var students = new Object();
students.name = "pika";
students.age = 19;
students.qq = "12345678";
var stu= new Array();
stu[0] = "name";
stu[1] = "qq";
var json = JSON.stringify(students,stu);
alert(json);
//輸出結(jié)果:{"name":"pika","qq":"12345678"}

數(shù)組的值代表將被序列化成JSON字符串的屬性名

stu數(shù)組沒有“age”,所以students對象的“age”屬性沒有顯示

有三個參數(shù)

前面說到第三個參數(shù)就是用來縮進(jìn)或者直接添加字符串在序列化對象的前面,所以直接看例子就行啦,注意最多只能10個縮進(jìn)或字符

JSON.stringify({ a: 2 }, null, " ");   
// 輸出結(jié)果:{\n "a": 2\n}

JSON.stringify({ uno: 1, dos : 2 }, null, '\t')
/* 輸出結(jié)果:
{
    "uno": 1,
    "dos": 2
}
*/

var students = new Object();
students.name = "pika";
students.age = 19;
students.qq = "12345678";
var stu= new Array();
stu[0] = "name";
stu[1] = "qq";
var json = JSON.stringify(students,stu,"test")
alert(json);
/* 輸出結(jié)果:
{
test"name": "pika",
test"qq": "12345678"
}
*/

最后來總結(jié)一下,JSON.stringify()函數(shù)是用來序列化對象的,無論輸入什么,輸出的都是字符串類型,可以按自己的需求來定制如何序列化,輸出結(jié)果是怎樣的格式

以上是“javascript中json.stringify()有什么用”這篇文章的所有內(nèi)容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內(nèi)容對大家有所幫助,如果還想學(xué)習(xí)更多知識,歡迎關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道!

標(biāo)題名稱:javascript中json.stringify()有什么用
轉(zhuǎn)載來源:http://chinadenli.net/article32/giohpc.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供定制開發(fā)、做網(wǎng)站移動網(wǎng)站建設(shè)網(wǎng)站排名、企業(yè)建站、網(wǎng)站收錄

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)

外貿(mào)網(wǎng)站制作