您现在的位置是:首页 > Javascript
当前栏目
js 基础 json
2023-02-25 18:16:26 时间
这是我参与8月更文挑战的第26天,活动详情查看:8月更文挑战
一、语法
1.对象
var person ={
name : "nic",
age:29
}; // 对象的标准方式
var person ={
"name":"nic",
"age":29
}; // Json中的对象给属性加引号
{
"name":"nic",
"age":29
} //json
//与javaScript对象的区别: 结尾;号 json中属性值必须加引号
2.数组
[
{
"title":" profession",
"author":[
"Ninc"
],
edition:2
},
{
"title":" profession",
"author":[
"Ninc"
],
edition:2
}
]
二、解析与序列化
Json可以解析为JavaScript对象
books[1].title //就可以得到第二本书的书名
而XML数据结构要解析成DOM文档再从中提取出数据
doc.getElementByTagName("book")[2].getAttribute("title");
三、json对象
1.早期json解析器是eval()函数
var a= '{"session_key":"bsm+VwaGnpeTe9mRC2drdQ==",
"expires_in":7200,"openid":"oY8Ly0JzGKDvM9C7KwSjAIBt-8fM",
"unionid":"oB2ANwOMEJ9cPM2qKV3Zz1_R4zuM"}';
var a = eval("(" + a + ")");
console.log(a.unionid);
console.log(typeof(eval("{}")));//undefined console.log(typeof(eval("({})")));//object
eval()对json数据结构求值存在风险,可能执行恶意代码,如果解析字符串中含有alert等也会被解析。弹框会弹出 2.json对象的两个方法 (1)stringify() 把JavaScript对象序列化为json字符串
var book ={
title : "pro",
authors:[
"Nio"
],
edition:3,
year:2011
}
var jsonText = JSON.stringify(book)
//{"title":"pro","authors":["Nio"],"edition":3,"year":2011}
// 输出的json字符串不包含任何空格
值为undefined的任何属性都会被跳过,结果最终都是有效json数据类型的实例属性
- JSON.stringify(book)除了要序列化的javascript对象外,还可接收两个参数 第一个是过滤器(可以是一个数组或者函数)
当过滤器是数组时
var book ={
"title" : "pro",
"authors":[
"Nio"
],
edition:3,
year:2011
}
var jsonText = JSON.stringify(book,["title","edition"]); // 是一个数组
//{"title":"pro","edition":3}
当过滤器是函数时 需要传入两个参数,一个是属性名(键)和属性值
var book ={
"title" : "pro",
"authors":[
"Nio"
],
edition:3,
year:2011
}
var jsonText = JSON.stringify(book,function(key,value){
switch(key){
case "authors":
return value.join(",");
case "year":
return 5000;
case "edition":
return 12;
default:
return value;
}
}); // {"title":"pro","authors":"Nio","edition":12,"year":5000}
第二个参数是一个选项(表示是否在json字符串中保留缩进)
var book ={
"title" : "pro",
"authors":[
"Nio"
],
edition:3,
year:2011
}
var json = JSON.stringify(book,null,4);
console.log(json);
也可将缩进符 变为任意字符
var json = JSON.stringify(book,null,"---");
(2)parse() 把json字符串转为JavaScript对象
var javascriptText = JSON.parse(jsonText)
console.log(javascriptText)
//{title: "pro", authors: Array(1), edition: 3, year: 2011}
//authors: ["Nio"]edition: 3title: "pro"year: 2011__proto__: Object
四、toJSON() 方法
1.有时候,JSON.stringfy()还是不足以满足某些对象进行自定义序列化的需求 可以给对象定义toJSON() 方法
var book ={
"title" : "pro",
"authors":[
"Nio"
],
edition:3,
year:2011,
toJSON:function(){
return this.title;
}
}
var json = JSON.stringify(book);
该方法返回图书的书名
相关文章
- 前端的设计模式系列-适配器模式
- 用O(1)的时间复杂度删除链表节点
- Vue 开发者的五项必备技能
- TS 类型体操:图解一个复杂高级类型
- Node.js v17.5.0 发布,核心增加 Fetch API
- 二月编程语言排行出炉!没意外
- 前端的设计模式系列-模版模式
- Web Components系列之认识 Shadow DOM
- 这个Dubbo注册中心扩展,有点意思!
- 百分之四十的人都做错的一道 CSS 面试题
- 谈谈我这些年对前端框架的理解
- 精准的打包—Webpack 的 Tree Shaking
- Async/Await 你是会用,但是你知道怎么处理错误吗?
- JavaScript写一个Once函数,让传入函数只执行一次
- 用最简的方式学Vuex,你学会了吗?
- 深入聊聊 JavaScript 框架
- 什么是 ReactJS,它可以用来做什么?
- Vue项目实战精粹汇总,你知道几个?
- CSS 这些你冷落的性能,其实很好用能极大提升效率!
- TypeScript 类型体操:数组长度实现数值运算