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使用,显示在移动应用中。
JSON的相关内容的更多相关文章
- .NetCore获取json文件配置内容
.netcore中的数据配置及内容用了json文件代替了之前framework的xml文件,那么json中的数据该怎么获取呢?下面讲解json文件在.net core中的获取方法. 首先,新建一个.n ...
- linux用户权限相关内容查看
linux用户权限相关内容查看 1 用户信息 创建用户一个名为 webuser 的账号,并填写相应的信息: root@iZ94fabhqhuZ:~# adduser webuser Adding ...
- SharePoint安全 - 在Goolge和Bing中查找SharePoint相关内容
博客地址 http://blog.csdn.net/foxdave 本篇提供两个查询串字典,分别对应Google和Bing的搜索,用来查询SharePoint网站的相关内容 Google ShareP ...
- 韩顺平细说Servlet视频系列之tom相关内容
韩顺平细说Servlet视频系列之tom相关内容 tomcat部署项目操作(注意:6.0版本以后的支持该操作,5.x版本需要另外配置?待验证!) 项目发布到tomcat的webapps文件下,然后启动 ...
- jQuery实现页内查找相关内容
当需要在页面中查找某个关键字时,一是可以通过浏览器的查找功能实现,二是可以通过前端脚本准确查找定位,本文介绍通过jQuery实现的页面内容查找定位的功能,并可扩展显示查找后的相关信息. 本文以查找车站 ...
- Struts2(四)——页面相关内容
上篇博客总结了数据流转各个方面的内容,这篇重点说一下框架对于界面上知识. 一,说到页面,记得在总体介绍中,说到Struts2比Struts1的一方面优势就是它支持更多的视图技术(Freemarker, ...
- 学习笔记之html5相关内容
写一下昨天学习的html5的相关内容,首先谈下初次接触html5的感受.以前总是听说html5是如何的强大,如何的将要改变世界.总是充满了神秘感.首先来谈一下我接触的第一个属性是 input的里面的 ...
- 基于KNN的相关内容推荐
如果做网站的内容运营,相关内容推荐可以帮助用户更快地寻找和发现感兴趣的信息,从而提升网站内容浏览的流畅性,进而提升网站的价值转化.相关内容 推荐最常见的两块就是“关联推荐”和“相关内容推荐”,关联推荐 ...
- 第一天上午——HTML网页基础知识以及相关内容
今天上午学习了HTML基础知识以及相关内容,还有DW的基本使用方法. HTML(HyperText Markup Language):超文本标记语言,超文本:网页中除了包含文本文字之外,还包含了图片, ...
随机推荐
- HDFS HA 的 hdfs-site.xml
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?> <!-- Licens ...
- PHP代码审计4-漏洞挖掘思路
漏洞挖掘思路 漏洞形成的条件 1.变量可控制 2.变量可到达有利用价值的函数(危险函数) 漏洞造成的效果 漏洞的利用效果取决于最终的函数功能,变量进入什么样的函数就导致什么样的效果 危险函数 文件包含 ...
- 20,Django contenttypes 应用
contenttypes 是Django内置的一个应用,可以追踪项目中所有app和model的对应关系,并记录在ContentType表中. 1.创建一个项目 2.数据库迁移,生成默认表. 3.存着所 ...
- Web 开发的未来:React、Falcor 和 ES6
Web 开发的未来:React.Falcor 和 ES6 Widen是一家数字资产管理解决方案提供商.目前,其技术栈还非常传统,包括服务器端的Java.浏览器端的AngularJS.提供REST AP ...
- Jenkins拾遗--第一篇(安装Jenkins)
起因 近期由于工作需要做起了起了jenkins的维护.不做不知道,一搞发现里边全是小坑.两个月弄了一身泥.曾经小瞧了它,但是发现其实要弄好它不是那么容易的.有句知名的话"没有总结就没有提高. ...
- 遍历两个自定义列表来实现字典(key:value)
#自定义key ${keys} create list key1 key2 key3 #自定义value ${values} create list v ...
- android SharedPreferences 浅析
1. 介绍:SharedPreferences 的作用是使用键值对的方式存储数据.且支持多种不同的数据类型存储: Android数据持久化方法中最简单的一种,即使用Preferences的键值对存储方 ...
- 在Linux下安装ArcGIS10.2
最近由于工作需要,沉迷可视化无法自拔,一直在研究基于GIS的地图可视化,自己在本机windows搭建了一个ArcGIS服务器,用Tableau和R调用WMS服务成功,不愧是GIS元老级应用,效果超赞. ...
- Scrapy 学习笔记(一)数据提取
Scrapy 中常用的数据提取方式有三种:Css 选择器.XPath.正则表达式. Css 选择器 Web 中的 Css 选择器,本来是用于实现在特定 DOM 元素上应用花括号内的样式这样一个功能的. ...
- Rational Rose 使用技巧
1.浏览区 2.菜单项 其中Format选项中: 决定各项是否显示,也可以通过右击-option选择 3.常用快捷键: F1:任何时候都可以按F1获得相关帮助,把鼠标放在某条菜单上按F1可以获得这条菜 ...