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}

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 203,937评论 6 478
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,503评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 150,712评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,668评论 1 276
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,677评论 5 366
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,601评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,975评论 3 396
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,637评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,881评论 1 298
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,621评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,710评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,387评论 4 319
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,971评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,947评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,189评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 44,805评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,449评论 2 342

推荐阅读更多精彩内容

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