js中json字串與json物件的相互轉換

2022-08-29 04:48:14 字數 3789 閱讀 4057

web前端開發過程中,資料傳輸json是以字串的形式傳遞,而js操作的是json物件。

一、json字串轉換為json物件

var obj =json.parse(str[, reviver]);

例:

json.parse('{}');              // {}

json.parse('true'); // true

json.parse('"foo"'); // "foo"

json.parse('[1, 5, "false"]'); // [1, 5, "false"]

json.parse('null'); // null

json.parse('1'); // 1

reviver:如果是乙個函式,則在被返回之前對原始值執行其方法後返回。

解析json字串並返回對應的值,可以額外傳入乙個轉換函式,用來將生成的值和其屬性, 在返回之前進行某些修改。函式的引數k、v、分別代表返回的屬性名和屬性值

json.parse('', function (k, v) );                            // 

json.parse('}}', function (k, v) );

// 1

// 2

// 4

// 6

// 5

// 3

// ""

二、將json物件轉化為json字串。

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

value將要序列化成 乙個json 字串的值。

replacer可選如果該引數是乙個函式,則在序列化過程中,被序列化的值的每個屬性都會經過該函式的轉換和處理。

space可選指定縮排用的空白字串,用於美化輸出(pretty-print);如果引數是個數字,它代表有多少的空格;上限為10。該值若小於1,則意味著沒有空格;如果該引數為字串(字串的前十個字母),該字串將被作為空格;如果該引數沒有提供(或者為null)將沒有空格。

例:
json.stringify({});                        // '{}'

json.stringify(true); // 'true'

json.stringify("foo"); // '"foo"'

json.stringify([1, "false", false]); // '[1,"false",false]'

json.stringify(); // ''

json.stringify();

// ""

json.stringify([new number(1), new string("false"), new boolean(false)]);

// '[1,"false",false]'

json.stringify();

// '{}'

json.stringify([undefined, object, symbol("")]);

// '[null,null,null]'

json.stringify();

// '{}'

json.stringify(, [symbol.for("foo")]);

// '{}'

json.stringify(

, function (k, v)

});// undefined

// 不可列舉的屬性缺省會被忽略:

json.stringify(

object.create(

null,

, y: })

);// ""

如果replacer是乙個陣列,陣列的值代表將被序列化成json字串的屬性名。

json.stringify(foo, ['week', 'month']);  

// '', 只保留「week」和「month」屬性值。

一些時候,你想儲存使用者建立的乙個物件,並且,即使在瀏覽器被關閉後仍能恢復該物件。下面的例子是json.stringify適用於這種情形的乙個樣板:

// 建立乙個示例資料

var session = ;

session.screens.push();

session.screens.push();

session.screens.push();

session.screens.push();

session.screens.push();

session.screens.push();

// 使用 json.stringify 轉換為 json 字串

// 然後使用 localstorage 儲存在 session 名稱裡

localstorage.setitem('session', json.stringify(session));

// 然後是如何轉換通過 json.stringify 生成的字串,該字串以 json 格式儲存在 localstorage 裡

var restoredsession = json.parse(localstorage.getitem('session'));

// 現在 restoredsession 包含了儲存在 localstorage 裡的物件

console.log(restoredsession);

四、對於ie8以下舊版本的支援polyfill

json物件可能不被老版本的瀏覽器支援。可以將下面的**放到js指令碼最開始的位置,這樣就可以在沒有原生支援 json 物件的瀏覽器(如ie6)中使用json物件。

以下演算法是對原生json物件的模仿:

if (!window.json) ,

stringify: (function () ;

var escmap = ;

var escfunc = function (m) ;

var escre = /[\\"\u0000-\u001f\u2028\u2029]/g;

return function stringify(value) else if (typeof value === 'number') else if (typeof value === 'boolean') else if (typeof value === 'object') else if (isarray(value)) else if (tostring.call(value) === '[object object]')

return '';}}

return '"' + value.tostring().replace(escre, escfunc) + '"';

};})()

};}

也可以引入json3.js的cdn

js中json字串與json物件格式轉換

本篇部落格整理記錄了一下js和json之間轉換的幾種情況和方法,順便記錄一下自己在工作上遇到的乙個小問題 看似很簡單!但當時頭腦不清醒寫了很久!敲篇部落格敲打自己 最近在公司開發乙個頁面,由於element框架的需要,我需要介面給我返回下面這種格式的資料 initialdata 可是問題來了,在修改...

JSON字串與JSON物件

在資料傳輸流程中,json是以文字,即字串的形式傳遞的,而js操作的是json物件,所以,json物件和json字串之間的相互轉換是關鍵。例如 json字串 var str1 json物件 var str2 要運用上面的str1,必須運用下面的要領先轉化為json物件 這一點在ajax返回的時候,經...

JS 操作JSON,字串與JSON之間轉換

1 字串轉json json.parse string 2 json轉字串 json.stringify obj 3 json物件追加資料 使用push方法,用法如下 現在的json資料a為 b的資料格式要和a相同,使用a.push b 後,a的資料為 目前發現push這個方法只能追加第乙個子級的資...