JSON数据格式

JSON全称为:JavaScript Object Notation,中文为:Javascript对象表示法。是Douglas Crockford在2006年作为IETF RFC 4627提交给IETF,它是利用了Javascript中的一些结构模式来表示结构化数据。

JSON优点

  1. Javascript的表示结构
  2. 支持Javascript原生的类型的访问方式
  3. Javascript对象数组和JSON数据格式转换很方便,也就是说可以以javascript对象形式去访问JSON数据格式

JSON容易产生的误解

  1. JSON不是一门编程语言,是它只是一种用来表达数据结构的格式
  2. JSON不是专门针对Javascript语言使用的数据格式,任何语言、程序都可以使用这种格式。
  3. JSON和XML它们是两种不同的数据格式,都用于表达和序列数据。

目前浏览器都支持JSON数据格式,并提供了原生的JSON对象,JSON对象的语法可以表示以下三种类型的值,但是不支持Javascript中的函数、变量、对象实例:

1、简单值:可以为数值、字符串、布尔值、null,但是不支持undefined值。

如:1,”char”,true,null

2、对象:可以为Javascript里的对象形式的值,在Javascript里面的对象属性名用引号或者不用引号,但是在JSON中必须用双引号包围属性名。

如:{“Name”: “Nichole”}

3、数组,可以为Javascript里的数组形式的值

如:[15,true,false,”char”]

通过这些类型可以组成更加复杂的类型,可以在对象里面嵌套数组,数组里面嵌套对象,或者对象嵌套对象、数组嵌套数组,如:

1 [ { 
  “name”: “Nikds”,
  “site”: [ “New York”, “Beijing" ],
  “age”: 29
  },

  {
  “name”: “Wang”, “site”: [ “Hunan”, “Beijing" ],
  “age”: 24
  },

  { “name”: “Jack”, “site”: [ “Sichuan”, “Guangzhou" ],
  “age”: 21
} ]

 

JSON对象提供了两个方法分别为:

stringify()

用于将Javascript对象序列化为JSON字符串,它接受三个参数,第一个为需要转换为JSON字符串的对象;第二个为过滤器可以为函数、数组;第三个参数为数值或者字符串来缩进或者填充,如下实例:

var ne1 = { 
  "name": "Nikds",
  "site": [ "New York", "Beijing" ],
  "age": 29
  };


JSON.stringify(ne1)
"{"name":"Nikds","site":["New York","Beijing"],"age":29}” //输出结果


JSON.stringify(ne1,["site","age"]) //过滤器输入数组,只会输出在数组内的出现的字符串的属性名和值。
"{"site":["New York","Beijing"],"age":29}”   //输出结果


JSON.stringify(ne1,function(key,value){
//通过函数过滤器来过滤数据,数据是根据函数返回的值来序列化数据的。函数如果返回undefind那么相应的属性就会被忽略,在其尾部一定要提供default,这样可以保证其他数据能正常输出。


switch(key){ case ’name’: return value = ‘Jacki’; case ’age’: return value = ’40'; default: return value; }; });
"{"name":"Jacki","site":["New York","Beijing"],"age":"40”}” //输出结果


JSON.stringify(ne1,[“site”,”age”],4)
//过滤器输入数组,只会输出在数组内的出现的字符串的属性名和值,并且设置第三个值来控制结果中的空白和缩进,这样有助于代码的可阅读性。但是所有类型的缩进都不能超过10个字符,如果超过都会截掉10后们的字符串,以及大于10的数值会转换为10数值。
“{//输出结果 "site":["New York","Beijing"], "age":29 }”


JSON.stringify(ne1,[“site”,”age”],”---") 也可以输入字符串来控制阅读性。
“{ //输出结果 ----"site":["New York","Beijing"], ----"age":29 }”

 

parse()

用于将JSON对象解析为Javascript对象,它接受两个个参数,第一个参数是需要转换为javascript对象的JSON数据,第二个参数是一个函数,函数接受两个值,一个是键一个是对应的值,为了区别该函数和stringify方法,把该方法称为还原函数。 函数接受两个值,如果函数返回undefind,则从结果中删除相应的键值,如果返回其他值,则将该值插入结果中。 在JSON中,是不能保存对象、函数、变量的,所以当我把一个new Date()转换为JSON格式是保存的一个字符串

var jsontext = '{"firstname":"Jesper","surname":"...e":["555-0100","555-0120"],"year":"2011,11,3"}'; 

JSON.parse(jsontext,function(key,value) {
  if(key == "year") {
    return new Date(value)
  } else {
    return value};
  });

 

文档信息

发表评论

电子邮件地址不会被公开。 必填项已用*标注