PHP中JSON应用
自从PHP5.2开始的这个版本增加了对JSON的支持。主要包含两个函数:json_encode和json_decode。
JSON是一种数据的存储格式,就像PHP序列化后的字符串一样。也是一种数据描述,比如我们将一个数组序列化后存放,就可以很容易的反序列化后应用。JSON也是如此,只不过他搭建的是客户端Javascript和服务端PHP的交互桥梁。我们用PHP生成JSON后的字符串,然后把这个字符串传给前台Javascript,Javascirpt就可以很容易的将其反JSON然后应用。
以下是举例:
有文件:brand1.json,内容如下,通过观察就会发现JSON的格式很像数组:
[{"cName":"Intel","id":"1"},{"cName":"AMD","id":"2"}]
以下是PHP代码:
<?php $content = file_get_contents("brand1.json"); $obj = json_decode($content); print_r($obj); echo "<hr>"; for($i = 0; $i < count($obj); $i ++){ echo "cName:".$obj[$i]->cName." id:".$obj[$i]->id."<br/>"; } ?>
以上代码通过PHP的文件操作读取brand1.json文件,读取到的是brand1.json文件中的字符串内容,再通过第3行json_decode将此字符串解码,返回对象为数组对象。print_r($obj)打印的结果如下:
Array ( [0] => stdClass Object ( [cName] => Intel [id] => 1 ) [1] => stdClass Object ( [cName] => AMD [id] => 2 ) )
通过输出的结果可以看出的确是数组,brand1.json中的两个元素分别被生成为两个stdClass Object对象放在数组中,在程序中输出对象的值是通过调用对象的属性来获取,如:$obj[$i]->cName。还有一种情况,第3行代码改为:$obj = json_decode($content,true); 可以将取出的JSON对象直接转变成数组而不是stdClass Object对象,以下是第4行代码输出的结果:
Array ( [0] => Array ( [cName] => Intel [id] => 1 ) [1] => Array ( [cName] => AMD [id] => 2 ) )
和上图对比,会发现存储于数组中的不再是stdClass Object,而是Array。我们需要注意的是:在取出数据时就要换数组的方式来取值:$obj[$i]['cName'],而不能再用对象访问属性的方式来得到数据,如:$obj[$i]->cName,虽然不报错,但你什么都取不到。我们倒过来说,如果我们用了第一种方式解析数据,我们就只能用$obj[$i]->cName来访问数据,如果换成$obj[$i]['cName'],那就会有错误信息等着你了:
Fatal error: Cannot use object of type stdClass as array in D:/wamp/www/cj/data/test.php on line 8
错误信息已经把问题描述得很清楚了,仅此而已,在不同的场合选择合适的方式,没有其他区别。
PHP中JSON应用相关推荐
- python中json dumps_python中json.loads,dumps,jsonify使用
search_info = {'id':132,'user_role':3} print type(search_info) #输出 #转为string用dumps print type(json.d ...
- python中json的使用
python中json的使用 代码如下: import jsondict1 = {'A': 'a', 'B': 'b', 'C': 'c'} print(type(dict1)) print(dict ...
- java request get json数据_Java中,获取request中json数据
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 import java.io.IOException; import javax.servlet.http.HttpServletRequest; /** ...
- java字符串转json取集合_Java中Json字符串直接转换为对象的方法(包括多层List集合)...
使用到的类:net.sf.json.JSONObject 使用JSON时,除了要导入JSON网站上面下载的json-lib-2.2-jdk15.jar包之外,还必须有其它几个依赖包:commons-b ...
- python json模块有什么用_Python中json模块与jsonpath模块的区别是什么
Python中json模块与jsonpath模块的区别是什么 发布时间:2021-02-02 11:15:52 来源:亿速云 阅读:94 作者:小新 这篇文章主要介绍了Python中json模块与js ...
- java中将json字符串_Java中JSON字符串与java对象的互换实例详解
在开发过程中,经常需要和别的系统交换数据,数据交换的格式有XML.JSON等,JSON作为一个轻量级的数据格式比xml效率要高,XML需要很多的标签,这无疑占据了网络流量,JSON在这方面则做的很好, ...
- C#中JSON序列化和反序列化
有一段时间没有到博客园写技术博客了,不过每天逛逛博客园中大牛的博客还是有的,学无止境-- 最近在写些调用他人接口的程序,用到了大量的JSON.XML序列化和反序列化,今天就来总结下json的序列化和反 ...
- ajax中json和文本的区别,json格式字符串--json对象 【ajax_responseText】重点
JSON.parse(string) JSON.Stringify(object)document.getElementById("id").value=jsonObj // ...
- php编码 js解码,浅谈php和js中json的编码和解码
php中 1)编码 $jsonstr = json_encode($array) 2)解码 $arr = json_decode($jsonstr) echo json_encode("中文 ...
- ASP.NET中JSON的序列化和反序列化
JSON是专门为浏览器中的网页上运行的JavaScript代码而设计的一种数据格式.在网站应用中使用JSON的场景越来越多,本文介绍ASP.NET中JSON的序列化和反序列化,主要对JSON的简单介绍 ...
最新文章
- 如何记录数据表信息的变更
- UVa1335 Beijing Guards(二分查找)
- 图像的线性变换的原理及OpenCV代码实现~
- Python之functools.reduce使用
- 菜鸟成长日记(四)之WMIC简单命令应用
- go语言高并发与微服务实战_go-micro+gin+etcd微服务实战之服务注册与发现
- html之table删除和添加数据(获取行号和列号)
- 【深度优先搜索】计蒜客:踏青
- poj 1087.A Plug for UNIX (最大流)
- 联想微型计算机怎么连接电源,终于认识联想电脑主板与机箱电源安装方法
- 微信、QQ防撤回神器,终于被我找到了......
- 免费地图大战?阿里上将高德百度元帅百度地图
- FMI飞马网【线上直播】京东POP接口自动化测试
- Latex文献报错 Something‘s wrong--perhaps a missing \item. \end{thebibliography}
- 【C语言】球从100米自由落下,每次落地后反跳回原高度的一半。当10次落地时,共经过多少米,第10次反弹多高。
- 基片集成波导天线设计基础
- 147计算机代表啥,147代表什么意思
- Vue小项目——仿cnode.js社区
- 2022年中南大学计算机考研复试内容是什么
- android中bmob云存储,Android中的Bmob移动后端云服务器功能