json基础

本文介绍了JSON的基本语法,包括字符串表示、对象及数组的写法,并详细解释了如何使用JSON.stringify()和JSON.parse()方法进行数据的序列化与反序列化。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

JavaScript Object Notation(JavaScript对象表示法),它是一种数据格式。

一、语法概要

1、json表示字符串时必须使用双引号。

2、js与json表示对象的差异(注意:json中要求给属性也加上双引号)如下:

js
var person = {
      name:"kebe",
      age:23
};

json:
{
   "name":"kebe",
   "age":23
}

比较以上代码可以发现有两个重要的差异:

首先,没有声明变量(json中没有变量的概念);
其次,没有末尾的分号。

属性的值可以是简单值,也可以是复杂值:如下所示:

{
    "name":"kobe",
    "age":23,
    "school":{
           "name":"central School!",
           "addr":"qinghualu"
     }
}
3、数组(javaScript中的数组字面量),对比如下:

js:
var value = [24,"hi",true];

json:
[24,"hi",true]
同样的,json数组中也没有变量和分号;同时,我们可以发现:当我们将与前面的组合起来,能够表示更复杂的数据组合:

[
   {
       "name":"xiaohong",
       "age":12
    },
    {
         "name":"xinao",
         "age":23
     },
    {
         "name":"xifei",
         "age":32   
     }
]

二、json对象

早期,我们基本上都是使用eval()函数;ECMAScript5对解析json的行为作了规范,定义了全局对象JSON。至于老的浏览器可以选择https://github.com/douglascrockford/JSON-js瞧瞧。

JSON对象有两个方法:

stringify()和parse()。例子如下:

var book={
    name:"json",
    author:"zhangsan"
};
var jsonText = JSON.stringify(book);
序列化js对象时,所有函数即原型成员都会被有意忽略,不体现在结果中。值为undefined的任何属性也都会被跳过。

json--->js:

var bookCopy = JSON.parse(jsonText);
如果JSON.parse()的字符串不是有效的json,该方法会抛出错误。

详细介绍:

stringify()方法还可接收两个参数。

第一个参数是个过滤器,可以是一个数组,也可以是一个函数;

第二个参数是一个选项,表示是否在JSON字符串中保留缩进。

1、过滤

如果过滤器参数为数组,其结果中将只包含数组中列出的属性。如下:

var book={
    "title":"js高级程序设计",
    "authors":["authorA","authorB"],
    edition:3,
    year:2011
};
var jsonText = JSON.stringify(book,["title","year"]);

2、如果传入的第二个参数时函数。

传入的函数接收两个参数,属性(key)名和属性值。

....

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值