共计 1218 个字符,预计需要花费 4 分钟才能阅读完成。
简介
这篇文章介绍一下怎么把 JavaScript 对象序列化为 JSON。只管 JSON 格局是建设在 JavaScript 对象的语法之上,然而它们并不相同,这意味着并不是所有的 JavaScript 对象都能够齐全转化为 JSON。
代码示例
咱们首先来定义一个简略的 JS 对象,用来示意一个人的相干信息,这个对象有上面的字段:
- name – a string;
- age – a number;
- birthDate – a date;
- languages – an array of strings.
const jsObject = {
name: "Todd",
age: 20,
birthDate: new Date(),
languages: ["Chinese", "English"]
}
要把这个对象转化为 JSON 字符串,只须要调用 JSON 对象的 stringify 办法。留神,JSON 是规范的内建对象,不须要在代码中引入。
console.log(JSON.stringify(jsObject));
// {"name":"Todd","age":20,"birthDate":"2022-06-06T05:54:49.460Z","languages":["Chinese","English"]}
序列化失去的是一种压缩格局,在网络传输时开销更小,因为它没有不必要的字符。如果咱们想要一种更易读的模式输入,能够借助一些 stringify 办法反对的额定参数。
JSON.stringify(jsObject, null, 3)
这个办法能够接管三个参数,第二个参数是一个可选参数 replacer function,能够扭转解决的过程,这里咱们用不到传 null。
第三个参数也是可选参数,接管一个数字作为空白字符数插入到后果中,能够使后果可读性更强。须要留神的是数值范畴在 1-10 之间,大于 10 会默认取 10。
console.log(JSON.stringify(jsObject, null, 3));
/*
{
"name": "Todd",
"age": 20,
"birthDate": "2022-06-06T05:54:49.460Z",
"languages": [
"Chinese",
"English"
]
}
*/
function 并不是非法的 JSON 值,意味着在序列化的过程中会被省略,如果在数组中会转为 null
const objectWithFunction = {
someProperty: "some value",
func: () => console.log("test"),
arrayOfFunctions: [() => console.log("test"),
() => console.log("test2")
]
}
console.log(JSON.stringify(objectWithFunction, null, 3));
/*
{
"someProperty": "some value",
"arrayOfFunctions": [
null,
null
]
}
*/
正文完
发表至: json.stringify
2022-06-06