json 学习笔记

定义:json 是JavaScript对象表示法。

格式:

var jsonObject ={

 "url":"www.baidu.com",

    "name":"zkr",

 "address":"shanghai"

}

多次嵌套json:

var jsonObject={
  "ch":
    [
     {"names":"怡美家园","data":[2,2,1,1,1,1], "times":[10,11,13,13,21,23]},
     {"names":"怡美家园","data":[2,2,1,1,1,1],"times":[10,11,13,13,21,23]}  
     ]
  } ;

基本语法:

以值对的形式存在,(名称:值对)key value;

如果值对有多个对象用数组[],每个对象用{}表示,键值对以:分开;

 

简单的使用例子;

<script type="text/javascript">
 var jsonO={
    "name":"zkr",
    "age":12,
    "hight":165

   "adress":{
     "china":"guo",
     "jiangsu":"sheng",
     "nanjing":["shi","shenghui"]
    }
 }
 window.onload=function(){
  document.getElementById("name").innerHTML=jsonO.name;
  document.getElementById("age").innerHTML=jsonO.age;
  document.getElementById("hight").innerHTML=jsonO.hight;

alert(jsonO.adress.china);
  alert(jsonO.adress["nanjing"]);
 }
    
</script>

<div>
  name:<span id="name"></span>
  age:<span id="age"></span>
  hight:<span id="hight"></span>
 </div>

 访问json的方式:

通过.的形式,如:jsonO.name;

通过["name"],[数组下标]的形式,如:jsonO["name"] ,jsonO["age"],jsonO["hight"];

对于嵌套的json对象:

可以使用

jsonO.adress.china;
jsonO.adress["nanjing"];

修改json的值

jsonO.adress.china="zhongguo";
  jsonO.adress["nanjing"]="shenghui";

删除对象的属性:

delete关键字:

delete jsonO.adress.china;

delete jsonO.adress["nanjing"];

 json 中的对象的值是数组:利用索引值来获取;

jsonO.adress.nanjing[1];

修改直接赋值,删除 delete关键字

 

json 的解析:

 


function test (){
//创建xhr对象
var xhr;
if(window.XMLHttpRequest){
xhr=new XMLHttpRequest();
}else {
xhr=new ActivXObject("Mirocsoft.XMLHTTP");
}
xhr.onreadystatechange=function(){
if(xhr.readyState==4&&xhr.status==200){
jsonO=JSON.parse(this.responseText);//json解析
alert(jsonO);
document.getElementById("te").innerHTML=jsonO.sites[0].name;
}

}

xhr.open("GET","/test/text/1.txt","ture");
xhr.send();
}

异常:

解析数据

json中存的是字符串,

无论是date还是function都是以字符串形式存储的,

解析后再次转换为响应的类型。

json不能存储date对象,

如果存储的话要转成字符串

解析后转换成字符串,在转换成date数据。

 

 

今天工作第一次听到跨域访问:

使用jsonp:

get可以

 

定义跨域:

同源策略:

 简言之,域名,协议,端口保持一致

域名:

协议:http https

端口:8080

同时访问:http://store.company.com/dir/page.html同源检测结果:

http://store.company.com/dir2/other.html 成功  
http://store.company.com/dir/inner/another.html 成功  
https://store.company.com/secure.html 失败 协议不同
http://store.company.com:81/dir/etc.html 失败 端口不同默认端口80
http://news.company.com/dir/other.html 失败 主机名不同
posted @ 2017-03-09 16:46  zkr  阅读(178)  评论(0编辑  收藏  举报