zoukankan      html  css  js  c++  java
  • 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 失败 主机名不同
  • 相关阅读:
    160809207刘兆轩
    技术报告
    homework160809207刘兆轩
    施润行160809301(9)
    施润行160809301(8)
    施润行160809301(7)
    施润行160809301(6)
    施润行160809301(5)
    施润行160809301(作业4)
    施润行160809301(作业3)
  • 原文地址:https://www.cnblogs.com/cflr/p/6526464.html
Copyright © 2011-2022 走看看