码迷,mamicode.com
首页 > Web开发 > 详细

JSON语法,解析JSON,序列化JSON

时间:2017-10-10 21:53:12      阅读:222      评论:0      收藏:0      [点我收藏+]

标签:3.1   rank   数组   null   avl   个数   cti   1.3   string   

        Json(JavaScript Object Notation)  JavaScript对象表示法

        Json是JavaScript的一个严格的子集,利用了JavaScript中的一些模式类表示结构化的数据,因为可以吧JSON直接传给eavl(),而且不比创建DOM对象

       1,JSON的语法:

  • 数字(整数或浮点数)
  • 字符串(在双引号中)
  • 逻辑值(true 或 false)
  • 数组(在方括号中)
  • 对象(在花括号中)
  • null

         JSON可以表示三种类型的值:1,简单值,可以使用与JavaScript相同的语法,可以在JSON中表示字符串,数值,布尔值和null,但是不支持undefined

                                                           2,对象,一组无序的键值对,值可以是简单值,也可以是复杂的数据类型值。

                                                           3,数组 ,有序的值的列表,值可以是简单值,对象或者数组

              JSON不支持变量,函数,或者对象实例,

                         1.1,简单值:   5      "hello world"  字符串必须用双引号

                          1.2   对象:JSON对象的字面量形式,必须给属性加上双引号。 例如:{   “name”:"abcd‘,   "age":10;  }  和js的字面量相比首先,没有声明变量(json中没有变量的概念);其次没有末尾的分号;

                          例如:  {   " name":" ablc",   "age":29,  "school":{  "name": "li",  "location":"hangzhou"  }}    里面“school”对象包含的也是一个JSON对象

                          1.3   数组:JSON数组采用的是JavaScript中的数组的字面量形式

                                      

         2  Json对象数组                  

  1. {
    "employees": [
    { "firstName":"Bill" , "lastName":"Gates" },
    { "firstName":"George" , "lastName":"Bush" },
    { "firstName":"Thomas" , "lastName":"Carter" }
    ]
    }          //这是一个employee对象,包含了三个员工对象

           !!!!!!!!!!!            同样道理:

                   例如,可以创建一个新的 JavaScript 变量,然后将 JSON 格式的数据字符串直接赋值给它:

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" }

] }

                          这非常简单;现在 people包含前面看到的 JSON 格式的数据。但是,这还不够,因为访问数据的方式似乎还不明显。

                             在这里   people是js变量对象!!!!!,他的数值是JSON格式的数值,  "programmers","authors","musicians":是键值,对于的值是三个JSON数组!!!!!数组里面包括人员对象,

 

                    访问数据

                            尽管看起来不明显,但是上面的长字符串实际上只是一个数组;将这个数组放进 JavaScript 变量之后,就可以很轻松地访问它。实际上,只需用点号表示法来表示数组元素。所以,要想访问                             programmers 列表的第一个条目的姓氏,只需在 JavaScript 中使用下面这样的代码:

people.programmers[0].lastName;

注意,数组索引是从零开始的。所以,这行代码首先访问 people变量中的数据;然后移动到称为 programmers的条目,再移动到第一个记录([0]);最后,访问 lastName键的值。结果是字符串值 “McLaughlin”。 


2,var employees = [ { "firstName":"Bill" , "lastName":"Gates" }, { "firstName":"George" , "lastName":"Bush" }, { "firstName":"Thomas" , "lastName": "Carter" } ];
//正是一个JSON数组,里面包含三个对象。可以用employee[0].lastName; 来进行访问,,和js数组一样。
//这个访问JSON数组就和js数组一样了。employees[0].firstName

        3,解析与序列化

         将JSON数据结构解析成为JavaScript对象,便于访问

               3.1   JSON对象

                       ECMAScript定义了全局对象JSON,因此可以直接用eval()函数来解析,使用eval()函数解析JSON数据结构会有风险,因为可能执行到恶意代码

                     JSON对象有两个方法:stringify()和parse();

                     最简单的情况,两个方法用于将JavaScript对象序列化为JSON字符串和把JSON字符串解析为原生的JavaScript值。

                    

            JSON.stringify() 方法将一个  JavaScript 值转换为一个 JSON 字符串,如果指定了一个 replacer 函数,则可以替换值,或者如果指定了一个 replacer 数组,可选地仅包括指定的属性。

                     语法 JSON.stringify(value[, replacer [, space]])

                                     http://www.jb51.net/article/29893.htm

                                这个字符串不包括任何空格字符或者缩进。

                                 JSON.parse()可以得到相应的JavaScript值。

 

JSON语法,解析JSON,序列化JSON

标签:3.1   rank   数组   null   avl   个数   cti   1.3   string   

原文地址:http://www.cnblogs.com/lpfworld/p/7647729.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!