php解析json格式的文本
Posted 互联网技术就业速成班
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了php解析json格式的文本相关的知识,希望对你有一定的参考价值。
昨天,在我校的高级培训群里,有同学咨询了如何用php解析json格式的文本问题,老师发现这个问题比较典型,在此将相关的知识点总结分享给同学们,希望对其他同学掌握该知识点也能起到一些帮助。
同学jsoly提问说,有这样的一个数组$arr(如下图所示)
想转换为php的数组,该如何处理。
一眼望去就是个json格式的字符串,显然php里面不能这样定义,这样的定义会报语法错误,就像这样:
该同学认为用json格式存储数据比较简洁,问直接用json格式定义一个数组该怎么做。
老师提示用json_decode可以将json格式的字符串直接转换为php的变量。
于是该同学发出来如下的一段代码:
希望用foreach来遍历转换后的数组$arr,结果遇到了报错:
而且我们发现这是一个致命的错误,在foreach循环当中,无法将一个类的对象转换为字符串输出。
细心的同学会发现该同学用的是js对象的表示方法,如果把json内容当成是一个大的对象,那么里面包含了cn和en两个小对象,每个小对象当中又可以拆分为1,2两个对象,典型的key-value的结构。那么我们php里面有一个函数叫get_object_vars()就是用来解析对象格式的数据。于是老师给出了带有调试信息的代码,帮助该同学理解php的解析过程(如下图所示)。
请注意程序的开头用到了php多行字符串的技术。
我们调试的时候,最好用的输出函数,就是var_dump()函数,哪里不清楚,立刻var_dump()一下,就很清晰了。
最后,我们顺着该同学的思路实现的程序如下图所示:
在foreach循环里面输出了每个子对象的值,\n是换行符,在浏览器输出的时候请注意要替换为html标签<br/>
问题到此解决,需要补充说明的是,json_decode这个函数仅能处理 UTF-8 编码的数据。
希望同学们通过这个实战的案例,能加深对json基本概念的理解并在php中学会灵活应用json格式数据。
以上是关于php解析json格式的文本的主要内容,如果未能解决你的问题,请参考以下文章