JSON总结

JSON总结

1:JSON介绍

JSON:JavaScript对象表示法,JavaScript Object Notation

JSON是一种基于文本,独立于语言的跨平台的轻量级数据交换格式,是存储和交换文本信息的语法,类似于XML,但是比XML更小,更快,更易解析。

JSON和XML都可以作为跨平台的数据交换格式,但是XML带有很多标记,同时js处理json不方便,因此我们经常选择JSON来处理数据

JSON使用JavaScript语法来描述数据对象,具有自我描述性,更容易理解。

JSON可以使用ajax传输数据

eg:

{
	"code":0,
	"msg":"success",
	"list":[
		{
			"name":"张三",
			"age":23
		},
		{
			"name":"李四",
			"age":25
		},
		{
			"name":"王五",
			"age":24
		}
	]
}

2:JSON与XML比较:

相同点:

  • 都是纯文本
  • 都具有自我描述性
  • 都具有层级结构
  • 通过js解析
  • 使用ajax传送

XML:

  • XML有标记
  • 读取XML文档
  • 使用XML DOM来循环遍历文档
  • 读取值并存储在变量中

JSON:

  • 没有标记
  • 比XML更快,更短
  • 读取字符串,使用evel()来处理字符串

3:JSON语法

  • 花括号保存对象
  • 方括号保存数组
  • 数据由逗号分隔
  • 数据在名称/值对中
  • 文件类型:.json
  • JSON文件的MIME类型:"application/json"

4:JSON使用

JSON转化为JavaScript对象

由于JSON文本语法格式与js创建JSON对象类似,因此对于JSON文本,无需js解析器,js使用evel("("+string+")"),来使JSON数据生成js对象

js利用ajax从web服务器上读取JSON数据,将JSON数据转化为JavaScript对象,然后在网页中使用该数据

语法:

var Obj = evel("("+txt+")")

json字符串:

符合json格式要求的js字符串

var jsonstr = "{name:'zyb',age:23}"

json对象:

符合json格式要求的js对象

var jsonobj = {name:'zyb',age:23}

JSON字符串转化为JSON对象

1:var jsonobj = evel("("+jsonstr+")")

2:var jsonobj = jsonstr.parseJSON();

3:var jsonobj = JSON.parse(jsonstr)

JSON对象转化为JSON字符串

1:var jsonstr = jsonobj.toJSONString()
2:var jsonstr = JSON.stringify(jsonobj)

操作:

console.log("操作之前:",typeof obj);
console.log("操作之前:",obj instanceof Object);
console.log("操作之前:",obj instanceof String);
console.log("操作之前:",Object.prototype.toString.apply(obj));
console.log("操作之前:",obj.constructor);
console.log("操作之前:",obj.constructor == Object);
var str = JSON.stringify(obj)
console.log("操作之后:",typeof obj);
console.log("操作之后:",str instanceof Object);
console.log("操作之后:",str instanceof String);
console.log("操作之后:",Object.prototype.toString.apply(str));
console.log("操作之后:",Object.prototype.toString.apply(str).slice(8,-1));
console.log("操作之后:",str.constructor);
console.log("操作之后:",str.constructor == String);

结果:

操作之前: object
操作之前: true
操作之前: false
操作之前: [object Object]
操作之前: function Object() { [native code] }
操作之前: true
操作之后: object
操作之后: false
操作之后: false
操作之后: [object String]
操作之后: String
操作之后: function String() { [native code] }
操作之后: true

JSON数据作为一种存储数据的结构,js可以对其进行CRUD操作

JSON:

var obj = {
	"code":0,
	"msg":"success",
	"persons":[
		{
			"name":"张三",
			"age":23
		},
		{
			"name":"李四",
			"age":25
		},
		{
			"name":"王五",
			"age":24
		}
	]
}

1:增:C,create

操作:

console.log("操作之前:",obj);
obj.persons.push({"name":"赵六","age":27});
console.log("操作之后:",obj);

结果:

操作之前: { code: 0,
  msg: 'success',
  list: 
   [ { name: '张三', age: 23 },
     { name: '李四', age: 25 },
     { name: '王五', age: 24 } ] }
操作之后: { code: 0,
  msg: 'success',
  list: 
   [ { name: '张三', age: 23 },
     { name: '李四', age: 25 },
     { name: '王五', age: 24 },
     { name: '赵六', age: 27 } ] }

2:查:R,retrieve

操作:

console.log("查询:",obj.persons[0]);

结果:

查询: { name: '张三', age: 23 }

3:改:U,update

操作:

console.log("操作之前:",obj);
obj.persons[0].age = 26;
console.log("操作之后:",obj);

结果:

操作之前: { code: 0,
  msg: 'success',
  list: 
   [ { name: '张三', age: 23 },
     { name: '李四', age: 25 },
     { name: '王五', age: 24 } ] }
操作之后: { code: 0,
  msg: 'success',
  list: 
   [ { name: '张三', age: 26 },
     { name: '李四', age: 25 },
     { name: '王五', age: 24 } ] }

4:删:D,delete

操作:

console.log("操作之前:",obj);
delete obj.persons[0];
console.log("操作之后:",obj);

结果:

操作之前: { code: 0,
  msg: 'success',
  list: 
   [ { name: '张三', age: 23 },
     { name: '李四', age: 25 },
     { name: '王五', age: 24 } ] }
操作之后: { code: 0,
  msg: 'success',
  list: [ , { name: '李四', age: 25 }, { name: '王五', age: 24 } ] }

5:遍历,for...in

操作:

for(var person in obj.persons){
	console.log(person+" :"+obj.persons[person]);
	console.log(person+" :"+obj.persons[person].name);
	console.log(person+" :"+obj.persons[person].age);
}

结果;

0 :[object Object]
0 :张三
0 :23
1 :[object Object]
1 :李四
1 :25
2 :[object Object]
2 :王五
2 :24
posted on 2016-05-09 11:43  借个火点烟  阅读(195)  评论(0编辑  收藏  举报