JSON总结篇

来源:互联网 发布:mysql redis 特点区别 编辑:程序博客网 时间:2024/06/11 06:07

  先上点干货。

  一、JSON字符串与JS对象转换

    在前端,经常需要请求服务器返回一些数据,这些数据是用JSON字符串来表示的。为了使用这个字符串,需要把它转换成js对象。这里介绍三种转换方式:

  1.Jquery提供:
var jsobj = $.parseJSON(data);// json转js obj
  2.浏览器支持的:
var jsobj = JSON.parse(data);//jsonJSON.stringify(jsobj);//js obj转json
  3.JS支持的:
var jsobj = eval('(' + data + ')');//json转js obj,必须加上两端的小括号。此方式存在安全隐患


二、JSON总结

JSON
  JavaScript Object Notation(JS对象表示法)
  JSON对象可以通过JS内建的eval()函数生成原生的JS对象。

JS对象与JSON对象:
  1.JS对象由花括号分隔。在括号内部,对象的属性以名称和值对的形式 (name : value) 来定义。属性由逗号分隔
  2.JSON对象:
     名称与值都要用“”括起来
  
VS XML:
  相同之处:JSON是纯文本,具有“自我描述性”(人类可读),具有层级结构(值中存在值),可以通过JS进行解析,可使用AJAX进行传输。
  不同之处:没有结束标签、更短、读写的速度更快、能够使用内建的JS eval()方法进行解析、使用数组、不使用保留字

语法:
  JSON语法是JS对象表示法语法的子集:数值在名称/值对中、数据由逗号分隔、大括号保存对象、中括号保存数组。
  JSON的书写格式是:名称/值对
  JSON值可以是:数字、字符串、逻辑值(TRUE or FALSE)、数组(在中括号中)、对象(在大括号中)、Null
  文件类型是:.json

JSON文件
  JSON文件的文件类型是 ".json"
  JSON文件的MIME类型是"application/json"

JSON对象
  实例:
{"name":"runoob", "alexa":10000, "site":null}

  JSON对象使用在大括号{}中书写。对象可以包含多个key/value(键/值)对。
  key必须是字符串,value可以是合法的JSON数据类型(字符串、数字、对象、数组、布尔值或NULL)---字符串即代表要用""括起来。
  key和value中使用冒号(:)分割。
  每一对的key/value使用逗号(,)分割

  访问对象值:
  1.使用点号:myObj.name
  2.使用中括号:myObj["name"]
  
  可以使用for-in循环对象的属性。

  嵌套JSON对象:
  JSON对象中可以包含另一个JSON对象。
{"name":"runoob", "alexa":10000, "site":null}

  可以使用点号或者中括号来访问嵌套的JSON对象。
  使用delete删除对象属性。

JSON数组:
  数组作为JSON对象。
["Google", "Runoob", "Taobao"]

  数组在中括号中书写、
  数组值必须是合法的JSON数据类型。而在JS中,数组值不仅可以使JSON数据类型,还可以是JS表达式。

  JSON对象中的数组:
{ "name":"网站", "num":3, "sites":["Google", "Runoob", "Taobao"]}


 
 嵌套JSON对象中的数组
    JSON对象中数组可以包含另一个数组,或者另一个JSON对象。
myObj = {    "name" : "网站" ,    "num" : 3 ,    "sites" : [         {"name" : "Google" , "info":["Android", "Google搜索" , "Google翻译"]},         {"name" : "Runoob" , "info":[...]},         {"name" : "Taobao" , "info":[...]}    ]}
JSON.parse()
  JSON通常用于与服务端交换数据。
  在接收服务器数据时一般是字符串。
  可以使用JSON.parse()将数据转换成JS对象。

JSON.parse(text[, reviver])
 说明:text:必需,一个有效的JSON字符串
          reviver:可选,一个转换结果的函数,将为对象的每个成员调用此函数

 JSON.stringify()
  JSON通常用于与服务端交换数据
  在向服务器发送数据时一般是字符串。
  可以使用JSON.stringufy()将JS对象转换成字符串

JSON.stringify(value[, replacer[, space]])
  参数:value:必需,一个有效的JSON字符串
            replacer:可选,用于转换记过的函数或数组
            space:可选,文本添加缩进、空格和换行符

JSON使用
  eval()函数可编译并执行任何JS代码,这隐藏了一个潜在的安全问题。
  使用JSON解析器将JSON转换成JS对象时更安全的做法。JSON解析器只能识别JSON文本,而不会编译脚本。
  
三、跨域访问之JSONP:
  由于同源策略的影响,在从其他站点请求数据时,使用JSON是没有作用的(其他的XML、text都是不行的)。解决办法是使用JSON的变种——jsonp。
  jsonp非常简单,就是在JSON外面封装一层,示例如下:
jsonpCallback + "(" + jsonstr + ")");//jsonCallback是前端传回去的函数名,意思就是把json字符串作为参数放入函数即可。
  如果发送请求的是前端,使用Ajax,那么可以按照如下写法:
$.ajax({                type: "GET",                async: true,                url:"http:www.baidu.com",//替换为自己要请求的URL                dataType:"jsonp",                jsonp: 'jsonpCallback',                success: function(data) {                     //针对返回数据data进行的操作;data是以json字符串的形式返回的                } });


  好了,此处就讲到这里。

 

原创粉丝点击