关于json.stringify:JavaScript对象序列化为JSON

2次阅读

共计 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
   ]
}
*/
正文完
 0