• 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使用,显示在移动应用中。

  • 相关阅读:
    湘志恒善.NET 企业实训新学员必读手册
    周末电脑城有感硬件和软件价格的升降(实物图9.22更新)
    企业I期做项目之前的小例子
    商学院企业I班暑期作业 【2008年8月12日更新】
    项目公司机房升级
    android小应用帮美女更衣系列一(附源码)
    android小应用帮美女更衣系列二(附源码)
    @synthesize 和 @property
    VS2008下载地址和版本破解
    Android腾讯微薄客户端开发十三:提及篇(与我有关的微博)
  • 原文地址:https://www.cnblogs.com/hiuman/p/7347398.html
Copyright © 2020-2023  润新知