自从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应用相关推荐

  1. 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 ...

  2. python中json的使用

    python中json的使用 代码如下: import jsondict1 = {'A': 'a', 'B': 'b', 'C': 'c'} print(type(dict1)) print(dict ...

  3. java request get json数据_Java中,获取request中json数据

    该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 import java.io.IOException; import javax.servlet.http.HttpServletRequest; /** ...

  4. java字符串转json取集合_Java中Json字符串直接转换为对象的方法(包括多层List集合)...

    使用到的类:net.sf.json.JSONObject 使用JSON时,除了要导入JSON网站上面下载的json-lib-2.2-jdk15.jar包之外,还必须有其它几个依赖包:commons-b ...

  5. python json模块有什么用_Python中json模块与jsonpath模块的区别是什么

    Python中json模块与jsonpath模块的区别是什么 发布时间:2021-02-02 11:15:52 来源:亿速云 阅读:94 作者:小新 这篇文章主要介绍了Python中json模块与js ...

  6. java中将json字符串_Java中JSON字符串与java对象的互换实例详解

    在开发过程中,经常需要和别的系统交换数据,数据交换的格式有XML.JSON等,JSON作为一个轻量级的数据格式比xml效率要高,XML需要很多的标签,这无疑占据了网络流量,JSON在这方面则做的很好, ...

  7. C#中JSON序列化和反序列化

    有一段时间没有到博客园写技术博客了,不过每天逛逛博客园中大牛的博客还是有的,学无止境-- 最近在写些调用他人接口的程序,用到了大量的JSON.XML序列化和反序列化,今天就来总结下json的序列化和反 ...

  8. ajax中json和文本的区别,json格式字符串--json对象 【ajax_responseText】重点

    JSON.parse(string) JSON.Stringify(object)document.getElementById("id").value=jsonObj    // ...

  9. php编码 js解码,浅谈php和js中json的编码和解码

    php中 1)编码 $jsonstr = json_encode($array) 2)解码 $arr = json_decode($jsonstr) echo json_encode("中文 ...

  10. ASP.NET中JSON的序列化和反序列化

    JSON是专门为浏览器中的网页上运行的JavaScript代码而设计的一种数据格式.在网站应用中使用JSON的场景越来越多,本文介绍ASP.NET中JSON的序列化和反序列化,主要对JSON的简单介绍 ...

最新文章

  1. 如何记录数据表信息的变更
  2. UVa1335 Beijing Guards(二分查找)
  3. 图像的线性变换的原理及OpenCV代码实现~
  4. Python之functools.reduce使用
  5. 菜鸟成长日记(四)之WMIC简单命令应用
  6. go语言高并发与微服务实战_go-micro+gin+etcd微服务实战之服务注册与发现
  7. html之table删除和添加数据(获取行号和列号)
  8. 【深度优先搜索】计蒜客:踏青
  9. poj 1087.A Plug for UNIX (最大流)
  10. 联想微型计算机怎么连接电源,终于认识联想电脑主板与机箱电源安装方法
  11. 微信、QQ防撤回神器,终于被我找到了......
  12. 免费地图大战?阿里上将高德百度元帅百度地图
  13. FMI飞马网【线上直播】京东POP接口自动化测试
  14. Latex文献报错 Something‘s wrong--perhaps a missing \item. \end{thebibliography}
  15. 【C语言】球从100米自由落下,每次落地后反跳回原高度的一半。当10次落地时,共经过多少米,第10次反弹多高。
  16. 基片集成波导天线设计基础
  17. 147计算机代表啥,147代表什么意思
  18. Vue小项目——仿cnode.js社区
  19. 2022年中南大学计算机考研复试内容是什么
  20. android中bmob云存储,Android中的Bmob移动后端云服务器功能

热门文章

  1. Linux学习笔记45——软件安装:源代码与 Tarball
  2. 微信【跳一跳】 opencv视觉识别 + 物理外挂
  3. echart4数据管理组件dataset学习
  4. 税前2万4,到手1万4???年终奖计税方式2022年1月1日起有新变化!
  5. fedora chm 文档 阅读
  6. Cisco Packet Tracer软件介绍与使用方法
  7. infoq_InfoQ编辑推荐读物清单
  8. 二次贝塞尔曲线转换为三次贝塞尔曲线
  9. 准备好迎接2021黑色星期五的爆单了吗?
  10. 数据丢失不用怕,迅捷转换器来帮您