关于json的一些事

因为平时老是接触它,但是又不是很了解,所以整理一下

关于json的格式   

<!DOCTYPE html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title> 标题 </title>
</head>
<body>

<script type="text/javascript">
    
    //定义一个json  相当于定义了一个对象名 以及 它的属性
    // { 键值对,  键值对 }
    var json1 =  { 'key1':123 , 'key2':'stringvvv' } ;
    document.write( json1.key1  +  "<br>" );
    document.write( json1.key2  +  "<br>" );
    
</script>

<br>----------------------------------<br>

<script type="text/javascript">
    
    //键值对中, 值不仅仅可以是数字或字符串, 还可以是另一个json
    var json2 = { 'key1':123, 'key2':{ 'key21':12312, 'key22':'sssss' } };
    document.write( json2.key1 +  "<br>" );
    document.write( json2.key2 +  "<br>" );
    document.write( json2.key2.key21 +  "<br>" );
    document.write( json2.key2.key22 +  "<br>" );
    
</script>

<br>----------------------------------<br>


<script type="text/javascript">
    
    //键值对中, 值不仅仅可以是数字或字符串或json, 还可以是一个json数组,用[]包起来
    var json3 = { 'key1':123, 'key2':{ 'key21':12312, 'key22':'sssss' }, 
                  'key3':[ {'key33':123,'key44':456 },
                           {'key33':123,'key44':456},
                           {'key33':123,'key44':456} 
                         ] 
                };

    document.write( json3.key3[0]  +  "<br>" );
    document.write( json3.key3[0].key33 +  "<br>" );
    document.write( json3.key3[0].key44 +  "<br>" );
    
    document.write( json3.key3[1]  );
    
</script>

</body>
</html>


如何用Javascript获取远程json

情况1:

以股票行情接口为例

如果要获得  http://hq.sinajs.cn/rn=61fdj&format=text&list=stock_sh_up_5min_20  输出的数据

打开链接,可以看到输出的是   stock_sh_up_5min_20 = ...

也就是说服务器返回的是一段js代码,所以我们在本地建立一个<script></script>,并把src等于上面的这个链接,像这样:

<script src="http://hq.sinajs.cn/rn=61fdj&format=text&list=stock_sh_up_5min_20" language="javascript"></script>

那么就相当于得到了里面的数据(虽然里面的变量不是我们定义的,但是加了这段script,就相当于我们定义了这些变量,脚本里也多了这些变量),然后就可以使用它们了,像这样:

<script language="javascript">alert(stock_sh_up_5min_20[0].symbol)</script>

 

 类似的,还有这个

<script type="text/javascript" src="http://hq.sinajs.cn/list=sh601006" charset="gb2312"></script>
<script type="text
/javascript">
     var elements=hq_str_sh601006.split(
",");
    document.write(
"current price:"+elements[3]);
</script>

 

情况2:

情况1中由于服务器已经插入了  var 变量 = xxxx , 所以可以直接操作变量  

而对于这种   https://data.btcchina.com/data/ticker?market=btccny  输出的是标准的json格式

{
  "ticker": {
          "high": "2894.97",
        "low": "2850.08",
        "buy": "2876.92",
        "sell": "2883.80",
        "last": "2875.66",
        "vol": "4133.63800000",
        "date": 1396412995
       }
}

 

可以使用 jquery为我们提供的跨域获取json的getJSON()函数

<!DOCTYPE html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title> 标题 </title>
<script type="text/javascript" src="js/jquery-1.9.1.min.js"></script>
</head>
<body>

<script type="text/javascript">
  
  var url = "https://data.btcchina.com/data/ticker?market=btccny";
  $.getJSON( url, function(data){
      
        document.write( data + "<br>" );
        document.write( data.ticker + "<br>" );
        document.write( data.ticker.high + "<br>" );
        document.write( data.ticker.sell + "<br>" );
        
  } );    

</script>
</body>
</html>


情况3:

这个链接 http://q.stock.sohu.com/app1/stockSearch?method=search&callback=searchBox.output&type=all&keyword=60

返回的是一个js代码,开头的searchBox.output是一个回调函数,我们可以通过修改callback参数来自定义我们的回调函数

http://q.stock.sohu.com/app1/stockSearch?method=search&callback=output&type=all&keyword=60

根据返回的数据格式,我们先定义好一个函数

function output(json) {   alert(json.result) }

然后用<script></script>的src把上面的网址引进去,同时js为我们提供了createElement()方法 可以动态创建一个<script></script>

最后代码如下:

//输出远程传回来的股票代码 输入提示
    function output(json) {
            
            var result = json.result;
            //for( var row in result) {
                $('.codesuggest').html( result.toString() );
            //}
            
    }


    //根据src创建相应的script
    function addScriptTag(src){
         var script = document.createElement('script');
              script.setAttribute("type","text/javascript");
             script.src = src;
             document.body.appendChild(script);
       }
 
     //输入框输入股票代码,把代码加进src
     $('.codesearch').keyup(function(){

             var src = $(this).val().toString();
             if( src.length  ) {
                 src = "http://q.stock.sohu.com/app1/stockSearch?method=search&callback=output&type=cnsi&keyword=" + src;
                 addScriptTag(src);
             }
   
     });

情况4:

这个链接  http://vip.stock.finance.sina.com.cn/quotes_service/api/json_v2.php/Market_Center.getSymbolGN?symbol=sh600048

让我头疼了很久,是一个 [] 包起来的json数组

尚未解决,求指导



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值