php解析json格式的文本
昨天php格式,在我校的高级培训群里,有同学咨询了如何用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标签 问题到此解决,需要补充说明的是,json_decode这个函数仅能处理 UTF-8 编码的数据。 希望同学们通过这个实战的案例,能加深对json基本概念的理解并在php中学会灵活应用json格式数据。 (编辑:成都站长网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |