|
|
|
|
|
本節(jié)將介紹兩種對 JSON 進行字符串化和解析的方法。能夠?qū)?JSON 從對象轉(zhuǎn)換為字符串,反之亦然,這對于傳輸和存儲數(shù)據(jù)很有用。
這就是本文要介紹的JSON.stringify()
與JSON.parse()
方法。
在文章開始之前,如果你需要從 .JSON
文件讀取數(shù)據(jù),那么可以參考此文:
JSON.stringify()
JSON.stringify()
方法將一個 JavaScript 對象或值轉(zhuǎn)換為 JSON 字符串。
字符串對于通過以輕量級方式存儲或傳遞信息將數(shù)據(jù)從客戶端傳輸?shù)椒?wù)器很有用。例如,你可以在客戶端收集用戶的設(shè)置,然后將它們發(fā)送到服務(wù)器。稍后,你可以使用JSON.parse()
方法讀取信息并根據(jù)需要使用數(shù)據(jù)。
我們將一個JSON 對象分配給變量obj
,然后通過把obj
傳給JSON.stringify()
函數(shù),并使用該函數(shù)轉(zhuǎn)換它,我們可以將此字符串分配給變量s
:
var obj = {"first_name" : "Sammy", "last_name" : "Shark", "location" : "Ocean"}
var s = JSON.stringify(obj)
s的值為:
'{"first_name" : "Sammy", "last_name" : "Shark", "location" : "Ocean"}'
現(xiàn)在,如果我們使用s
,我們將把 JSON 作為字符串而不是對象。
我們再看看下面幾個例子。
console.log(JSON.stringify({ x: 5, y: 6 }))
console.log(JSON.stringify([new Number(3), new String('false'), new Boolean(false)]));
console.log(JSON.stringify({ x: [10, undefined, function(){}, Symbol('')] }));
console.log(JSON.stringify(new Date(2006, 0, 2, 15, 4, 5)));
Output
> '{"x":5,"y":6}'
> '[3,"false",false]'
> '{"x":[10,null,null,null]}'
> '"2006-01-02T07:04:05.000Z"'
從這些示例看到,把對象轉(zhuǎn)為字符串時,某些值會發(fā)生變化,如“undefined”變成了null,空字符也變成了null,此外,空函數(shù)也會變成null。這是我們需要注意的地方。
JSON.stringify()
函數(shù)允許我們將對象轉(zhuǎn)換為字符串。相反,我們將使用JSON.parse()
函數(shù)。
JSON.parse()
字符串對于傳輸很有用,但如果你希望能夠?qū)⑺鼈冝D(zhuǎn)換回客戶端和/或服務(wù)器端的 JSON 對象,我們可以使用JSON.parse()
函數(shù)來做到這一點。
要轉(zhuǎn)換上面JSON.stringify()
部分中的示例,我們會將字符串s
傳遞給函數(shù),并將其分配給一個新變量:
var o = JSON.parse(s)
然后,我們將使用與obj
對象相同的對象o
。
為了更深入地了解,讓我們看一看一個 HTML 文件上下文中JSON.parse()
的示例:
<!DOCTYPE html>
<html>
<body>
<p id="user"></p>
<script>
var s = '{"first_name" : "Sammy", "last_name" : "Shark", "location" : "Ocean"}';
var obj = JSON.parse(s);
document.getElementById("user").innerHTML =
"Name: " + obj.first_name + " " + obj.last_name + "<br>" +
"Location: " + obj.location;
</script>
</body>
</html>
Output
Name: Sammy Shark
Location: Ocean
在 HTML 文件的上下文中,我們可以看到 JSON 字符串s
被轉(zhuǎn)換為對象obj
,而JSON.parse()
是解析 JSON 字符串并將其轉(zhuǎn)換為對象的安全函數(shù)。
總結(jié)
JSON 是一種在 JavaScript 中使用的自然格式,本文詳細解釋了JSON.stringify()
與JSON.parse()
如何操作JSON對象和字符串。