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

JSON的相关内容的更多相关文章

  1. .NetCore获取json文件配置内容

    .netcore中的数据配置及内容用了json文件代替了之前framework的xml文件,那么json中的数据该怎么获取呢?下面讲解json文件在.net core中的获取方法. 首先,新建一个.n ...

  2. linux用户权限相关内容查看

    linux用户权限相关内容查看 1   用户信息 创建用户一个名为 webuser 的账号,并填写相应的信息: root@iZ94fabhqhuZ:~# adduser webuser Adding ...

  3. SharePoint安全 - 在Goolge和Bing中查找SharePoint相关内容

    博客地址 http://blog.csdn.net/foxdave 本篇提供两个查询串字典,分别对应Google和Bing的搜索,用来查询SharePoint网站的相关内容 Google ShareP ...

  4. 韩顺平细说Servlet视频系列之tom相关内容

    韩顺平细说Servlet视频系列之tom相关内容 tomcat部署项目操作(注意:6.0版本以后的支持该操作,5.x版本需要另外配置?待验证!) 项目发布到tomcat的webapps文件下,然后启动 ...

  5. jQuery实现页内查找相关内容

    当需要在页面中查找某个关键字时,一是可以通过浏览器的查找功能实现,二是可以通过前端脚本准确查找定位,本文介绍通过jQuery实现的页面内容查找定位的功能,并可扩展显示查找后的相关信息. 本文以查找车站 ...

  6. Struts2(四)——页面相关内容

    上篇博客总结了数据流转各个方面的内容,这篇重点说一下框架对于界面上知识. 一,说到页面,记得在总体介绍中,说到Struts2比Struts1的一方面优势就是它支持更多的视图技术(Freemarker, ...

  7. 学习笔记之html5相关内容

    写一下昨天学习的html5的相关内容,首先谈下初次接触html5的感受.以前总是听说html5是如何的强大,如何的将要改变世界.总是充满了神秘感.首先来谈一下我接触的第一个属性是  input的里面的 ...

  8. 基于KNN的相关内容推荐

    如果做网站的内容运营,相关内容推荐可以帮助用户更快地寻找和发现感兴趣的信息,从而提升网站内容浏览的流畅性,进而提升网站的价值转化.相关内容 推荐最常见的两块就是“关联推荐”和“相关内容推荐”,关联推荐 ...

  9. 第一天上午——HTML网页基础知识以及相关内容

    今天上午学习了HTML基础知识以及相关内容,还有DW的基本使用方法. HTML(HyperText Markup Language):超文本标记语言,超文本:网页中除了包含文本文字之外,还包含了图片, ...

随机推荐

  1. PHP代码审计5-实战漏洞挖掘-cms后台登录绕过

    cms后台登录绕过 练习源码:[来源:源码下载](数据库配置信息有误,interesting) 注:需进行安装 1.创建数据库 2.设置账号密码,连接数据库 3.1 正常登录后台,抓包分析数据提交位置 ...

  2. 集合源码分析之 HashMap

    一 知识准备 HashMap是基于哈希表的Map接口的非同步实现.此实现提供所有可选的映射操作,并允许使用null值和null键.此类不保证映射的顺序,特别是它不保证该顺序恒久不变. 二  HashM ...

  3. 7 Django的模板层

    你可能已经注意到我们在例子视图中返回文本的方式有点特别. 也就是说,HTML被直接硬编码在 Python代码之中. def current_datetime(request): now = datet ...

  4. 1 Mongodb安装

    1.NoSQL简介 NoSQL,全名Not Only SQL,指的是非关系型的数据库 随着访问量的上升,网站的数据库性能出现了问题,于是NoSQL被设计出来了 优点.缺点 优点 高扩展性 分布式计算 ...

  5. 编译IOS下 libpcap1.7.2

    1.修改build-libpcap.sh libpcap版本号 2.执行脚本编译 出现问题: 2.发现configure过后,Makefile存在问题 实际configure的-arch armv7s ...

  6. laravel5.5事件系统

    目录 1 注册事件和监听器 2 定义事件 3 定义监听器 4 分发事件 更多使用方法 1. 可以手动注册事件 2. 事件监听器中调用队列 3.事件订阅者 1 注册事件和监听器 1.修改EventSer ...

  7. 《Cracking the Coding Interview》——第17章:普通题——题目4

    2014-04-28 22:32 题目:不用if语句或者比较运算符的情况下,实现max函数,返回两个数中更大的一个. 解法:每当碰见这种无聊的“不用XXX,给我XXX”型的题目,我都默认处理的是int ...

  8. 【Linear Support Vector Machine】林轩田机器学习技法

    首先从介绍了Large_margin Separating Hyperplane的概念. (在linear separable的前提下)找到largest-margin的分界面,即最胖的那条分界线.下 ...

  9. Python 3基础教程10-全局变量和局部变量

    本文来讲讲全局变量和局部变量,前面学习了函数的基本使用,所以,这里就要注意变量的使用和访问权限. 试试下面的demo.py

  10. diskimage-builder element

    root阶段 创建或修改初始根文件系统内容. 这是添加替代分销支持的地方,还是建立在现有图像上的自定义. 只有一个元素可以一次使用它,除非特别注意不要盲目覆盖,而是适应其他元素提取的上下文. -cac ...