Zend Framework处理Json数据方法详解

本文实例讲述了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.jb51.net/code/json

JSON在线格式化工具:
http://tools.jb51.net/code/jsonformat

在线XML/JSON互相转换工具:
http://tools.jb51.net/code/xmljson

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

在线json压缩/转义工具:
http://tools.jb51.net/code/json_yasuo_trans

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

更多关于zend相关内容感兴趣的读者可查看本站专题:《Zend FrameWork框架入门教程》、《php优秀开发框架总结》、《Yii框架入门及常用技巧总结》、《ThinkPHP入门教程》、《php面向对象程序设计入门教程》、《php+mysql数据库操作入门教程》及《php常见数据库操作技巧汇总》

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

时间: 2016-12-07

Zend Framework框架中实现Ajax的方法示例

本文实例讲述了Zend Framework框架中实现Ajax的方法.分享给大家供大家参考,具体如下: 开发平台:Windows XP SP2 测试平台:FreeBSD 7.0 开发工具:Netbeans 6.1 使用框架:Zend Framework 1.5.2 数据库: MySQL 5.0.51a 所需的数据库表和ZF相关目录以及文件: 一.表: mysql> select * from news; +----+-------+---------------------+ | id | tit

Zend Framework数据库操作技巧总结

本文实例总结了Zend Framework数据库操作.分享给大家供大家参考,具体如下: Zend_Db数据库知识 例子: Model文件: $this->fetchAll("is_jian=1","id DESC",0,2)->toArray(); //根据is_jian=1,按id倒序排列取前2条记录当第一个参数为null时,则直接按id倒序排列ASC为正序. 路由文件: $video=new Video();//实例化数据库类 $this->v

Zend Framework分发器用法示例

本文实例讲述了Zend Framework分发器用法.分享给大家供大家参考,具体如下: 分发是取得请求对象,提取其中的模块名.控制器名.动作名以及可选参数,然后实例化控制器并调用其中动作的整个过程. 如果其中的模块.控制器或动作没有找到,将使用默认值. Zend_Controller_Dispatcher_Standard类指定每个控制器和动作的默认值为index,模块的默认值为default. 该类允许开发者通过setDEfaultController()方法.setDefaultAction

Zend Framework实现自定义过滤器的方法

本文实例讲述了Zend Framework实现自定义过滤器的方法.分享给大家供大家参考,具体如下: 创建自定义的过滤器 代码: <?php require_once 'Zend/Filter/Interface.php'; class MyFilter implements Zend_Filter_Interface{ public function filter($value){ $badlist = array("梨","草莓","苹果"

解决了Ajax、MySQL 和 Zend Framework 的乱码问题

问题: 在 Google Map 上用 Ajax 以 get 方式向服务器传递数据时,服务器端显示为 url 乱码, Zend Framework 向 MySQL 存储数据为乱码,但是提取出来又是正常中文字体, MySQL 中输入中文,显示在 PHP 网页上为乱码. 解决方式: 1. Ajax 的 url 编码需要转换,我使用的如下函数: public function js_unescape($str) { $ret = ''; $len = strlen($str); for ($i = 0

WINDOWS + WAMP + Zend Framework 配置步骤分享

WINDOWS 下WAMP环境下 的 Zend Framework 配置 1,安装WampServer 下载WAMPSERVER并安装,在本例中,安装在C:\wamp下. 2 安装Zend Framework 解压缩 Zend Framework 压缩包中 \library\ 至 C:\wamp\library (这里面没有library目录,要自己建一个) 3 开启支持rewrite module 编辑 httpd.conf. - 编辑 C:\wamp\bin\apache\Apache2.2

Zend Framework前端控制器用法示例

本文实例讲述了Zend Framework前端控制器用法.分享给大家供大家参考,具体如下: 常用方法 1.getInstance() 功能:用于获取前端控制器实例. 代码如下: <?php $front = Zend_Controller_Front::getInstance(); 执行上述代码,将创建一个前端控制器实例. 2.setControllerDirectory() 功能:用于通知分发器到何处查找动作控制器action controller类文件. 3.getControllerDir

ZendFramework2连接数据库操作实例

本文实例讲述了ZendFramework2连接数据库操作.分享给大家供大家参考,具体如下: 相对于zf1,来说,zf2让我们对于数据库这方面的操作我的个人感觉是对于字段起别名简单了,但是对数据库的操作虽然配置写好的就基本不需要动了,但是还是比1的配置要繁琐, 还是那句话,大家可以去看看源码... Module.php 里面添加 public function getServiceConfig() { return array( 'factories' => array( 'Student\Mod

Zend Framework入门应用实例详解

本文实例讲述了Zend Framework入门应用.分享给大家供大家参考,具体如下: .htaccess文件 .htaccess文件用来实现URL重置,即当用户访问某资源时,会将其重新定位到指定的文件下. 代码示例: RewriteEngine on RewriteRule !\.(js|ico|gif|jpg|png|css)$ index.php 其中,行1表示重置引擎打开,行2表示当访问除js.ico.gif.jpg.png.css以外的文件时, 都将被重置到index.php文件下. 注

Zend Framework使用Zend_Loader组件动态加载文件和类用法详解

本文实例讲述了Zend Framework使用Zend_Loader组件动态加载文件和类的方法.分享给大家供大家参考,具体如下: 加载文件 Zend_Loader组件可以实现对文件的加载功能,还可以判断文件是否可读. 这两个功能分别由Zend_loader::loadFile()方法与Zend_loader::isReadable()方法来实现. 动态加载是可以将变量所指代的文件进行加载的过程.当需要加载的文件为用户输入或是某个方法的参数时,通过传统的加载方法会很难对文件进行加载. 通过动态加载

Zend Framework路由器用法实例详解

本文实例讲述了Zend Framework路由器用法.分享给大家供大家参考,具体如下: 路由是一个过程,在这个过程中它去除URI的端点(跟着基本URL的URI部分),并将其分解成参数来决定哪个模块.哪个控制器和哪个动作应该接受请求. 模块.控制器.动作.及其参数被打包到Zend_Controller_Request_Http对象. 使用路由器 为了正确使用路由器,必须对其进行初始化操作. 创建路由器可以通过前端控制器实例的getRouter()方法来实现.该方法不需要任何参数,执行该方法可以返回

Zend Framework动作控制器用法示例

本文实例讲述了Zend Framework动作控制器用法.分享给大家供大家参考,具体如下: 动作控制器简介 为了使用Zend_Controller_Action类,需要在实际控制器类中把它子类化. 代码: <?php class FooController extends Zend_Controller_Action{ public function barAction(){ //do something } public function bazAction(){ //do something

Zend Framework动作助手(Zend_Controller_Action_Helper)用法详解

本文实例讲述了Zend Framework动作助手(Zend_Controller_Action_Helper)用法.分享给大家供大家参考,具体如下: 通过助手模式,可以把一些经常使用的功能模块做封装,从而在可以在需要的地方灵活使用,主要是在action使用. Zend Framework中有两种助手,动作助手(Zend_Controller_Action_Helper)和试图助手(Zend_View_Helper). 动作助手可以向任何Zend_Controller_Action的衍生动作控制

Zend Framework动作助手Redirector用法实例详解

本文实例讲述了Zend Framework动作助手Redirector用法.分享给大家供大家参考,具体如下: Redirector 提供另一种实现方式,帮助程序重定向到内部或者外部页面: 转向器(Redirector)助手让你使用一个转向器对象帮助程序重定向到新的URL.与_redirect()方法相比,它具有多项优势.例如能够在转向器对象中预先配置整个站点的行为,或者使用与Zend_Controller_Action::_forward()相似的gotoSimple($action, $con

Zend Framework动作助手Url用法详解

本文实例讲述了Zend Framework动作助手Url用法.分享给大家供大家参考,具体如下: Url主要用于创建url: public function simple($action, $controller = null, $module = null, array $params = null) public function url($urlOptions = array(), $name = null, $reset = false, $encode = true) public fu

Zend Framework动作助手Json用法实例分析

本文实例讲述了Zend Framework动作助手Json用法.分享给大家供大家参考,具体如下: Json的使用较简单,以下是文档给出的用法: Json 用来解码和发送 JSON 响应: 当处理期望数据表响应的 AJAX 请求,JSON 响应迅速变成选择的响应. JSON 可以立即在客户端被解析,从而快速执行. JSON 动作助手完成以下任务: 如果布局是打开(enabled)的,则关闭(disable)它. 如果视图解析器(ViewRenderer)是打开的,则关闭它. 设置 'Content

Zend Framework动作助手FlashMessenger用法详解

本文实例讲述了Zend Framework动作助手FlashMessenger用法.分享给大家供大家参考,具体如下: FlashMessenger 用来处理Flash Messenger会话:FlashMessenger是一个神奇的助手. 有这么一种场景,在用户注册成功后,需要在提示页面上显示用户的名称,如果不通过get传递请求,当然你也可以通过session传递 要显示的用户名称.但是seesion的操作难免复杂,可以使用Flash Messenger快速的实现这个需求. FlashMesse

Zend Framework分页类用法详解

本文实例讲述了Zend Framework分页类用法.分享给大家供大家参考,具体如下: 1.分页类Pagination.php,最好是把这个类放在Zend目录下 class XY_Pagination { private $_navigationItemCount = 10; //导航栏显示导航总页数 private $_pageSize = null; //每页项目数 private $_align = "right"; //导航栏显示位置 private $_itemCount =

Zend Framework过滤器Zend_Filter用法详解

本文实例讲述了Zend Framework过滤器Zend_Filter用法.分享给大家供大家参考,具体如下: 引言:过滤器是对输入内容进行过滤,清除其中不符合过滤规则的内容,并将其余内容返回的过程. Zend中有个Zend_Filter组件用来实现过滤的功能.其中有个Zend_Filter_Interface子类,该子类为实现一般过滤器提供了接口. 要实现过滤器类,需要实现该接口中一个名为filter()的方法. 下面通过实例来演示如何使用Zend_Filter中定义的过滤器,该例演示如何实现字