一、JSON格式:JSON(JavaScript Object Notation,JS对象标记)是一种轻量级的数据交换格式,它基于ECMAScipt规范的一个子集,采用完全独立于编程语言的文本格式是来存储和表示数据。简介和清晰的层次结构使得JSON格式成为理想的数据交换语言,易于人阅读和编写,同时也易于及其解析和生成,并有效的提升网络传输效率。
二、JSON语法规则:在JSON语言中,一切都是对象,因此,任何支持的类型都可以通过JSON来表示,例如字符串、数字、对象、数组等,但是对象和数组是比较特殊且常用的两种类型。
三、JSON键/值对:JSON键值对是用来保存JS对象的一种方式,和JS对象的写法也大同小异,键/值对组合中的键名写在前面并用双引号“”包裹,使用冒号:分隔,然后紧接着值。
例:{"firstName":"John"},等价于JavaScript语句:{firstName="John"}
四、JSON与JS的关系:JSON是JS对象的字符串的表示法,它使用文本表示一个JS对象的信息,本质是一个字符串。
例:var obj={a:'Hello',b='World'}; //这是一个对象,键名也可用引号包裹
var json='{"a"="Hello","b"="World"}'; //这是一个JSON字符串,本质是一个字符串
五、JSON与JS对象互转
1、要实现从对象转换为JSON字符串,使用JSON.stringify()方法。
例:var obj=JSON.stringify({a:'Hello',b='World'});
2、要实现从JSON转换为对象,使用JSON.parse()方法。
例: var json=JSON.parse('{"a"="Hello","b"="World"}');
六、常用类型
1、对象:数据结构为{key1:value1,key2:value2,...}的键值对结构,在面向对象的语言中,key为对象的属性,value为对应的值,键名可以使用整数和字符串来表示,值的类型可以是任意类型。
(1)表示对象
例:{ "people": [{ "firstName": "Brett", "lastName":"McLaughlin", "email": "aaaa" },
{ "firstName":"Jason","lastName":"Hunter", "email": "bbbb"},
{ "firstName": "Elliotte", "lastName":"Harold", "email": "cccc"}]} //一个名为 people的变量,值是包含三个条目的数组,每个条目是一个人的记录,其中包含名、姓和电子邮件地址
2、数组:数据结构为{"java","javascript","vb"}的索引结构,在JS中数组是一种比较特殊的数据类型,它也可以像对象一样使用键值对,但还是索引用的比较多,同样,值的类型可以使任意类型。
(1)表示对象
例:{"firstName": "Brett", "lastName": "McLaughlin"}
3、赋值给变量
例:
var people = { "programmers": [ { "firstName": "Brett", "lastName":"McLaughlin", "email": "aaaa" },
{ "firstName": "Jason", "lastName":"Hunter", "email": "bbbb" },
{ "firstName": "Elliotte", "lastName":"Harold", "email": "cccc" }],
"authors": [
{ "firstName": "Isaac", "lastName": "Asimov", "genre": "science fiction" },
{ "firstName": "Tad", "lastName": "Williams", "genre": "fantasy" },
{ "firstName": "Frank", "lastName": "Peretti", "genre": "christian fiction" }],
"musicians": [
{ "firstName": "Eric", "lastName": "Clapton", "instrument": "guitar" },
{ "firstName": "Sergei", "lastName": "Rachmaninoff", "instrument": "piano" }] }
4、访问数据
(1)访问 programmers 列表的第一个条目的姓氏:people.programmers[0].lastName; //数组索引是从零开始的,这行代码首先访问 people变量中的数据,然后移动到称为 programmers的条目,再移动到第一个记录([0]),最后,访问 lastName键的值。
5、修改数据:people.musicians[1].lastName = "Rachmaninov";
6、转换为字符串
(1)在 JavaScript 中转换:String newJSONtext = people.toJSONString();
(2)将任何JavaScript对象转换为JSON文本:String myObjectInJSON = myObject.toJSONString();