欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

JSON总结

程序员文章站 2022-03-01 15:44:08
...

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