Zend Framework处理Json数据方法详解


Posted in PHP onDecember 09, 2016

本文实例讲述了Zend Framework处理Json数据的方法。分享给大家供大家参考,具体如下:

JSON分隔符及意义

{}    用于实现对象的包含,对象都包含在大括号中
,    逗号用于分隔对象的不同属性,或者数组的元素
[]    用于存放数组,数组将存放在中括号中
:    用于表示键/值对的值,冒号前为键,冒号后为该键的值

JSON示例

{
  "addressbook":{
    "name":"Mary Lebow",
    "address":{
      "street":"5 Main Street",
      "city":"San Diego,CA",
      "zip":91912
    },
    "phoneNumbers":[
      "619 332-3452",
      "664 223-4667"
    ]
  }
}

使用JSON

语法:$json = Zend_Json::encode($phpNative);
说明:其中,参数$phpNative为PHP常见的数据类型,可以是数组、对象或者其他类型的数据。
函数返回值$json为符合JSON格式的一个字符串。

示例:

<?php
require_once("Zend/Json.php");
$temp = array(
  "a"=>0,
  "b"=>1,
  "c"=>array(
    "c-1"=>21,
    "c-2"=>22,
    "c-3"=>23,
  ),
  "d"=>3
);
$json = Zend_Json::encode($temp);
echo "临时数组内容为:";
echo "<pre>";
print_r($temp);
echo "</pre>";
echo "转换为JSON格式内容为:";
echo "<pre>";
print_r($json);
echo "</pre>";

结果为:

临时数组内容为:

Array
(
  [a] => 0
  [b] => 1
  [c] => Array
    (
      [c-1] => 21
      [c-2] => 22
      [c-3] => 23
    )
  [d] => 3
)

转换为JSON格式内容为:

{"a":0,"b":1,"c":{"c-1":21,"c-2":22,"c-3":23},"d":3}

将JSON解码为普通数据

语法:$phpNative = Zend_Json::decode($json);

示例:

<?php
require_once("Zend/Json.php");
$json = "{
  \"addressbook\":{
    \"name\":\"zhangsan\",
    \"address\":{
      \"street\":\"Chang an jie\",
      \"city\":\"BeiJing\",
      \"zip\":100001
    },
    \"phoneNumbers\":[
      \"010-12345678\",
      \"010-11111111\"
    ]
  }
}";
echo "解码前为:";
echo "<pre>";
print_r($json);
echo "</pre>";
$native = Zend_Json::decode($json);
echo "解码后为:";
echo "<pre>";
print_r($native);
echo "</pre>";

输出结果为:

解码前为:
{
  "addressbook":{
    "name":"zhangsan",
    "address":{
      "street":"Chang an jie",
      "city":"BeiJing",
      "zip":100001
    },
    "phoneNumbers":[
      "010-12345678",
      "010-11111111"
    ]
  }
}
解码后为:
Array
(
  [addressbook] => Array
    (
      [name] => zhangsan
      [address] => Array
        (
          [street] => Chang an jie
          [city] => BeiJing
          [zip] => 100001
        )
      [phoneNumbers] => Array
        (
          [0] => 010-12345678
          [1] => 010-11111111
        )
    )
)

说明:

在使用此方法对JSON内容进行解码时,可以将其解码为数组,也可以将其解码为对象。

具体有Zend_Json::decode()方法的第二个参数决定。

语法格式如下

phpNative=ZendJson::decode(phpNative=ZendJson::decode(json,Zend_Json::TYPE_OBJECT);

上个例子解码为对象后的结果为

解码后为:

stdClass Object
(
  [addressbook] => stdClass Object
    (
      [name] => zhangsan
      [address] => stdClass Object
        (
          [street] => Chang an jie
          [city] => BeiJing
          [zip] => 100001
        )
      [phoneNumbers] => Array
        (
          [0] => 010-12345678
          [1] => 010-11111111
        )
    )
)

小结:

Json的使用还是比较简单的,在接口应用上需要Json。它可以在不同的语言中共用。可以灵活的传递数据。作用与XML类似,但是比XML要节省带宽。

PS:针对json的各种常用操作,还可参考使用本站相关json在线工具:

在线JSON代码检验、检验、美化、格式化工具:
http://tools.3water.com/code/json

JSON在线格式化工具:
http://tools.3water.com/code/jsonformat

在线XML/JSON互相转换工具:
http://tools.3water.com/code/xmljson

json代码在线格式化/美化/压缩/编辑/转换工具:
http://tools.3water.com/code/jsoncodeformat

在线json压缩/转义工具:
http://tools.3water.com/code/json_yasuo_trans

C语言风格/HTML/CSS/json代码格式化美化工具:
http://tools.3water.com/code/ccode_html_css_json

希望本文所述对大家基于Zend Framework框架的PHP程序设计有所帮助。

PHP 相关文章推荐
综合图片计数器
Oct 09 PHP
用PHP和ACCESS写聊天室(八)
Oct 09 PHP
坏狼的PHP学习教程之第2天
Jun 15 PHP
CakePHP去除默认显示的标题及图标的方法
Oct 22 PHP
php学习之 数组声明
Jun 09 PHP
php内存缓存实现方法
Jan 24 PHP
php去掉文件前几行的方法
Jul 29 PHP
PHP的Yii框架中过滤器相关的使用总结
Mar 29 PHP
PHP函数按引用传递参数及函数可选参数用法示例
Jun 04 PHP
详解PHP变量传值赋值和引用赋值变量销毁
Mar 23 PHP
Laravel 在views中加载公共页面的实现代码
Oct 22 PHP
php设计模式之状态模式实例分析【星际争霸游戏案例】
Mar 26 PHP
Zend Framework使用Zend_Loader组件动态加载文件和类用法详解
Dec 09 #PHP
PHP 根据key 给二维数组分组
Dec 09 #PHP
Zend Framework入门教程之Zend_Registry组件用法详解
Dec 09 #PHP
Zend Framework入门教程之Zend_Config组件用法详解
Dec 09 #PHP
Zend Framework过滤器Zend_Filter用法详解
Dec 09 #PHP
Zend Framework实现自定义过滤器的方法
Dec 09 #PHP
Zend Framework校验器Zend_Validate用法详解
Dec 09 #PHP
You might like
smarty模板引擎基础知识入门
2015/03/30 PHP
PHP实现的简单排列组合算法应用示例
2017/06/20 PHP
Laravel框架实现修改登录和注册接口数据返回格式的方法
2018/08/17 PHP
PHP的PDO预处理语句与存储过程
2019/01/27 PHP
PHP实现简单注册登录系统
2020/12/28 PHP
删除重复数据的算法
2006/11/23 Javascript
比较全的JS checkbox全选、取消全选、删除功能代码
2008/12/19 Javascript
分享几个超级震憾的图片特效
2012/01/08 Javascript
javascript当中的代码嗅探扩展原生对象和原型(prototype)
2013/01/11 Javascript
jquery选择器的选择使用及性能介绍
2013/01/16 Javascript
jquery怎样实现ajax联动框(一)
2013/03/08 Javascript
JS防止用户多次提交的简单代码
2013/08/01 Javascript
js抽奖实现随机抽奖代码效果
2013/12/02 Javascript
js+html5获取用户地理位置信息并在Google地图上显示的方法
2015/06/05 Javascript
js实现网页多级级联菜单代码
2015/08/20 Javascript
jquery实现可关闭的倒计时广告特效代码
2015/09/02 Javascript
使用ionic播放轮询广告的实现方法(必看)
2017/04/24 Javascript
详解js几个绕不开的事件兼容写法
2017/08/30 Javascript
Vue CLI2升级至Vue CLI3的方法步骤
2019/05/20 Javascript
js动态获取时间的方法分析
2019/08/02 Javascript
Vue 中如何将函数作为 props 传递给组件的实现代码
2020/05/12 Javascript
使用Vue-scroller页面input框不能触发滑动的问题及解决方法
2020/08/08 Javascript
Python设置默认编码为utf8的方法
2016/07/01 Python
python3人脸识别的两种方法
2019/04/25 Python
Python列表删除元素del、pop()和remove()的区别小结
2019/09/11 Python
给女朋友的道歉信
2014/01/10 职场文书
信息管理与信息系统专业求职信
2014/06/21 职场文书
2014年检验员工作总结
2014/11/19 职场文书
给客户的检讨书
2014/12/21 职场文书
2015年读书月活动总结
2015/03/26 职场文书
整改通知书
2015/04/20 职场文书
JS异步堆栈追踪之为什么await胜过Promise
2021/04/28 Javascript
只用50行Python代码爬取网络美女高清图片
2021/06/02 Python
JavaScript实现登录窗体
2021/06/22 Javascript
Golang gRPC HTTP协议转换示例
2022/06/16 Golang
Python first-order-model实现让照片动起来
2022/06/25 Python