JSON介绍、JSON语法、JSON使用等等

包括: 
JSON概述, 
JSON语法规则, 
使用JSON(JSON对象,JSON数组,JSON文档与对象的转换) 
JSON应用 
额外内容(PHP输出JSON数据,解析JSON字符串,客户端如何使用服务器JSON输出) 

JSON概述: 
    JSON:JavaScript Object Notation,JavaScript对象表示法,原本是JavaScript中创建对象的一种语法。 
    现在,JSON已经从JavaScript中独立出来,作为一种独立的字符串数据表示法,被Java、C#、C++、PHP、OC等几乎所有主流语言所支持。 
    
    JSON作为一种轻量级的文本数据交换格式,已被广泛使用于存储和交换文本数据领域,作用域XML类似,但比XML更简洁、更快、更容易解析。 

JSON语法规则: 
    JSON语法是JavaScript对象表示法语法的子集: 
        数据在名称/值对中 
        数据由逗号分隔 
        花括号保存对象 
        方括号保存数组 

   JSON数据的基本格式是“名称/值”对 
        "age":35  //等价于js语句  age=35 
        “名称”应使用双引号引起来 
        “值”可以是如下类型: 
            (1)数字(整数或浮点数) 
            (2)字符串(使用双引号) 
            (3)逻辑值(true或false) 
            (4)数组(在方括号中) 
            (5)对象(在花括号中) 
            (6)null 

使用JSON: 
    JSON对象: 
        JSON字符串可以描述一个对象。具体语法为: 
            书写在花括号中。 
            可以包含任意多个使用逗号分隔的“名称/值”对。 
            “名称”必须使用双引号括起来,值若是字符串也必须使用双引号括起来。 
            var jsonTxt='{ 
                "name":"Tom", 
                "age":35, 
                "isWorked":true 
            }'; 

    JSON数组: 
        JSON字符串还可以描述一个数组,具体语法为: 
            书写在方括号中。 
            其中可以包含多个值或对象。 
            var jsonTxt1='[10,true,null,{"x":60,"y":30}]'; 
            var jsonTxt2='[ 
                               {"name":"Tom","age":35}, 
                               {"name":"Joe","age":38}, 
                         ]'; 

    JSON文档与对象的转换: 
        使用eval()函数把一段JSON文本字符串解析为一个JavaScript对象: 
            var jsonTxt='{"x":60,"y":30}'; 
            var jsObj=eval("("+jsonTxt+")"); 
            把文本放在()中,防止语法错误。 
            注意: 
            (1)根据eval()的严格语法要求,其接收的参数只能是string类型,而不能是String类型! 
            (2)使用eval()将JSON字符串解析为JavaScript对象时,若不添加左右的小括号,则会被解释器理解为一段用大括号包围起来的普通JavaScript代码块,而无法识别为一个对象的声明。 

       还可以使用JSON.parse(string)方法来解析JSON字符串得到JavaScript对象: 
            var jsonTxt='{"x":60,"y":30}'; 
            var jsObj=JSON.parse(jsonTxt); 

       使用JSON.stringify(jsonObj)方法把JavaScript对象格式化为JSON字符串: 
            var jsObj={"x":60,"y":30}; 
            console.log(typeof JSON.stringify(jsObj)); 
            IE7-中的JS解释器不支持这两种方法,可以下载json2.js工具解决此问题。 

JSON应用: 
    使用AJAX解析并返回JSON(比如 级联列表) 

额外内容: 
PHP输出JSON数据: 
    可以使用json_encode()函数将一个PHP数组或对象等数据编码为一个JSON形式的字符串。 
    在向客户端输出JSON字符串数据之前,需向客户端声明Content-Type响应头。 

    header('Content-Type:application/json'); 
    $nameArr = array('King','Scott','Smith'); 
    $nameStr = json_encode($nameArr); 
    echo $nameStr; 

    索引数组将被编码为JSON数组。 
    
    header('Content-Type:application/json'); 
    $empArr = array('id'=>7788,'name'=>'Scott','age'=>35); 
    $empStr = json_encode($empArr); 
    echo $empStr; 

    关联数组将被编码为JSON对象。 

解析JSON字符串: 
    对于客户端请求中提交的或者从文件中读取的JSON字符串,可以使用json_decode()解析为PHP数组或对象。 
    /*假设客户端通过表单或AJAX提交了数据 
    shoeSizeArr = '[37,39,40,41]' */ 
    $str = $_REQUEST['shoeSizeArr']; 
    $arr = json_decode($str); 
    var_dump($arr); 

    PS:array(4){ 
        [0]=>int(37) 
        [1]=>int(39) 
        [2]=>int(40) 
        [3]=>int(41) 
    } 

    /*假设客户端通过表单或AJAX提交了数据 
    queryBook = '{"bname":"java","pdate":2015}' */ 
    $str = $_REQUEST['queryBook']; 
    $obj = json_decode($str); 
    var_dump($obj); 
    echo $obj->bname; 
    echo $obj->pdate; 

    PS:object(stdClass)#1 (2){ 
        ["bname"]=>string(4)"java" 
        ["pdate"]=>int(2015) 
    } 
    PHP中访问对象的成员属性使用->运算符而不是.号 

客户端如何使用服务器JSON输出: 
    若某个服务器端动态页面声明了响应头Content-Type:application/json且响应主体是JSON数组或JSON对象,那么该页面就是一个返回了纯数据的页面,而没有庞杂繁复的HTML标签。这样的页面返回的内容一般在客户端可以做如下用途: 
       被客户端AJAX程序解析,动态的显示在DOM树中。 
        被Android/iOS App使用,显示在移动应用中。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值