JSON学习

1.json(javascript object notation)

js对象表示法

json 是存储和交换文本信息的语法,

json 特点:

        1.轻量级的文本数据交换格式(相对于XML)

        2.独立于语言 (多种语言均支持json)

        3.json 具有自我描述性,更易于人理解

2.json与XML的比较



与XML的比较

3.json语法

json 语法是javascript对象表示法语法的子集

规则:1.数据在名称/值对中      (“name” : "json语法")

           2.数据由逗号分隔 

          3.花括号保存对象              ({"name" : "json语法" , "url" : "www.runoob.com"})    

          4.方括号保存数组         



4.json的使用

1.eval()  :eval()函数可编译并执行任何j s代码。可以解析json文本,然后生成javascript 对象

2.json 解析器: 将json转换为javascript 对象是更安全的做法,json解析器只能识别json文本,而不会编译脚本。

json解析器实际上是一个函数,输入为一个表示json 的字符串,输出为对象。

5.序列化

把任何javascript对象变成JSON,就是把这个对象序列化成一个JSON格式的字符串,这样才能通过网络传递给其他的计算机

var xiaoming = {
    name: 小明,
    age: 12,
    gender: true,
    'middle-school': '\"w3c\"  Middle School',
    skills: ['JavaScript','Java','python','Lisp']
};
JSON.stringify(xiaoming); 

//"{"name":"小明","age":14,"gender":true,"height":1.65,"grade":null,"middle-school":"\"W3C\" Middle School","skills":["JavaScript","Java","Python","Lisp"]}"

格式化输出:

JSON.stringify(xiaoming,null,'   ');

//"{
"name": "小明",
"age": 14,
"gender": true,
"height": 1.65,
"grade": null,
"middle-school": "\"W3C\" Middle School",
"skills": [
     "JavaScript",
    "Java",
    "Python",
    "Lisp"
  ]
}"

限制输出的内容:

JSON.stringify(xiaoming,['name','skills'],'   ');

//"{
  "name":"小明",
  "skills":[
       "Javascript",
       "Java",
       "Python",
       "Lisp"
   ] 
}"

对输出的数据进行相应的处理:

JSON.stringify(xiaoming,convert,'    ');
function convert(key,value){
    if(typeof value === 'string'){
         return value .toUpperCase();
    }
    return value;
}

精确化控制如何序列化对象,可以给对象定义一个toJSON()方法,直接返回JSON应该序列化的数据

var xiaoming = {
name: '小明',
age: 12,
gender: true,
'middle-school': '\"w3c\"  Middle School',
skills: ['JavaScript','Java','python','Lisp'],
toJSON: function (){
      return {
     'Name': this.name,
     'Age': this.age
      };
   }
};
JSON.stringify(xiaoming);

//"{"Name": "小明","age":14}"

6反序列化

拿到一个JSON格式的字符串,我们使用JSON.parse()把它变成一个javascript对象

JSON.parse('{"name":"wu","age":12}');
//Object {name: "wu",age: 12}

JSON.parse()还可以接受一个函数,用来转换解析出的属性

JSON.parse('{"name": "小明" , "age": 12}',function(key,value){
      if(typeof value =="number"){
           return value*2;
    }
     return value;
});
//Object{name:"小明",age:28}

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 1. 本文是在学习廖雪峰先生的JavaScrip教程 后的归纳 一、标准对象 typeofJavaScript的世...
    ting723阅读 2,615评论 0 2
  • 2.包装对象 4.json 4.1.序列化 4.2.反序列化
    wyude阅读 1,833评论 0 0
  • JSON是JavaScript Object Notation的缩写,它是一种数据交换格式JSON实际上是Java...
    _我和你一样阅读 2,299评论 0 0
  • 语法 JSON 值可以是:    - 数字(整数或浮点数)    - 字符串(在双引号中)    - 逻辑值(tr...
    heheheyuanqing阅读 3,047评论 0 1
  • 车票上显示开往西安方向的火车是晚上11点20分出发,沈乔低头看了看手表,10点40分,刚好。此时,车站的候车厅里已...
    野穗阅读 2,929评论 0 0