PHP JSON格式数据交互实例代码详解

PHP JSON格式数据交互实例代码详解,第1张

在PHP中解析JSON主要用到json_encode和json_decode两个PHP

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>


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/tougao/12132302.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-21
下一篇 2023-05-21

发表评论

登录后才能评论

评论列表(0条)

保存