JSON函数,比PHP解析XML方便很多,下面详细介绍下PHP
JSON的使用。
JSON基础介绍
JSON(JavaScript
Object
Notation)
JSON主要有两种结构:
“名称/值”对的集合,在PHP中可以理解为关联数组
(associative
array)。
值的有序列表(An
ordered
list
of
values)。在PHP中可以理解为普通数组(array)。
对象是一个无序的“‘名称/值'对”集合。一个对象以“{”(左括号)开始,“}”(右括号)结束。每个“名称”后跟一个“:”(冒号);“‘名称/值'
对”之间使用“,”(逗号)分隔。
数组是值(value)的有序集合。一个数组以“[”(左中括号)开始,“]”(右中括号)结束。值之间使用“,”(逗号)分隔。值(value)可以是双引号括起来的字符串(string)、数值(number)、true、false、
null、对象(object)或者数组(array)。这些结构可耐纯以嵌套。
我目前升念对昌笑咐JSON的理解更偏向于数组,类似于PHP中的关联数组,你可以将PHP数组转换为JSON格式。
更多JSON的介绍请参考JSON官网和IBM关于JSON的介绍
PHP
JSON解析实例
PHP5.2开始已经将JSON作为PHP扩展的一部分,所以并不需要另外安装JSON。另外为了保证下面的PHP
JSON实例不出现中文乱码,请保证你的编码格式为UTF8。
JSON是Javascript的一部分,首先我们看下Javascript中如何定义JSON
复制代码
代码如下:
var
json_obj
=
{'WebName':'PHP网站开发教程网'}
alert(json_obj.WebName)
var
json_arr
=[{'WebName':'PHP网站开发教程网','WebSite':'http://www.jb51.net'},{'ArtTitle':'PHP
JSON实例讲解'}]
alert(json_arr[1].ArtTitle)
var
php_json
=
[['PHP网站开发教程网','http://www.jb51.net'],['文章标题','PHP
JSON实例讲解']]
alert(php_json[1][0])
在这段JSON实例代码中我构建了所有的JSON形式,
第1行,定义了JSON以对象形式存在
第4行,定义了JSON以数组形式存在,嵌套了JSON对象,所以有点类似于PHP的关联数组,其实仍然是对象。
第7行,定了JSON以普通数组形式存在。
注意:由于Javascript是区分大小写的,所以访问JSON关联数组对象时注意key的大小写问题。
PHP与JSON格式数据交互时,第一步需要将PHP数组转换为JSON格式的数据,可使用PHP5自带的json_encode函数,当PHP解析传递过来的JSON格式数据时需要使用json_decode函数进行解析转换为PHP数组,PHP转换并解析JSON数据的实例代码如下
复制代码
代码如下:
<?php
$json_arr
=
array('WebName'=>'PHP网站开发教程网','WebSite'=>'http://www.jb51.net')
$php_json
=
json_encode($json_arr)
echo
$php_json
$php_json
=
json_decode($php_json)
print_r($php_json)
?>
说明:这里通过PHP定义了关联数组,然后通过json_encode转换为JSON格式的数据,通过echo语句可以看到转换后的JSON对象,通过PHP
JSON解析函数json_decode可以将JSON格式的数据解析为PHP的关联数组。如果编码不正确,JSON中文会出现乱码。如果你使用Editplus调试PHP,请注意保存文件时编码将ANSI改为UTF8。
最后我们来看下完整的PHP
JSON交互实例
复制代码
代码如下:
<?php
$json_arr
=
array('WebName'=>'PHP网站开发教程网','WebSite'=>'http://www.jb51.net')
$php_json
=
json_encode($json_arr)
?>
<script
type="text/javascript">
var
php_json
=
<?=$php_json?>
</script>
<script
type="text/javascript">
function
php_json_dis(php_json)
{
alert(php_json.WebName)
alert(php_json.WebSite)
}
php_json_dis(php_json)
</script>
至此,PHP通过json_encode和json_decode函数对JSON格式数据进行转换和解析的实例就介绍完了。
现在主流的网络请求中都采用JSON作为其数据交互格式,这主要是因为JSON有以下优势:
但如果在开发过程中,把很长很大的JSON数据在前后端传输,那就说明设计工作没做好,应该尽量避免这种数据传输,但也可以从下面几个方面进行下优化:
在 Skylake 处理器上,各种解析器解析同一个大数据量的JSON文件的速度(以 GB/s 为单位)如下所示:
我们知道,JSON作为一种轻量级的数据交换格式,现在被广泛应用,特别是在API层,返回数据格式基本上都是JSON。但是, JSON字符串如果过长,那在网络传输中也存岩卖在耗时的 ,站在性能角度我们需要合理优化JSON。
1、服务器端 开启GZip压缩
主流的服务端都支持GZip压缩,对于一般的纯文本内容GZip压缩率在35%以上,这样做的好处也很明显:
2、 键名缩短
对于结果集而言,数据都是查询循环输出的,所以当我们把键名缩短也变相压缩了JSON文本长度。比如原本的 {"name":"张三"} 我们可以写为 {"a":"张三"}
3、JSON中的 中文避免被转为Unicode编码
现在也有不少人喜欢将JSON中的汉字转为Unicode编码,此粗散逗时JSON文本内容就会变得很长,如果避免汉字转码,可以控制文本长度。
1,开启gzip,压缩率很高,即便是很长的文本,在网络中传输量也很小 。
2,不建议分次请求,除非是业务需要。连接掘启次数过多,加大了并发的压力。
3,提醒用户点击的做法可以通过按钮反馈或loading条来做。
4,如果有可能,考虑提前预读你可以这样,在一个隐藏的 iframe 里面请求服务器,返回值是这样的: <script>parent.notifyDataArrive(YOURS_JSON_DATA)</script>
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)