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
COM in PHP (winows only)
Oct 09 PHP
php中防止伪造跨站请求的小招式
Sep 02 PHP
php获取中文拼音首字母类和函数分享
Apr 24 PHP
php中动态变量用法实例
Jun 10 PHP
CodeIgniter配置之SESSION用法实例分析
Jan 19 PHP
thinkPHP删除前弹出确认框的简单实现方法
May 16 PHP
Windows2003下php5.4安装配置教程(IIS)
Jun 30 PHP
详解PHP用substr函数截取字符串中的某部分
Dec 03 PHP
php中引用&amp;的用法分析【变量引用,函数引用,对象引用】
Dec 12 PHP
阿里云PHP SMS短信服务验证码发送方法
Jul 11 PHP
php实现生成带二维码图片并强制下载功能
Feb 24 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
php抓即时股票信息
2006/10/09 PHP
PHP中浮点数计算比较及取整不准确的解决方法
2015/01/09 PHP
PHP实现的XML操作类【XML Library】
2016/12/29 PHP
thinkphp5.0自定义验证规则使用方法
2017/11/16 PHP
网站页面自动跳转实现方法PHP、JSP(上)
2010/08/01 Javascript
使用JavaScript检测Firefox浏览器是否启用了Firebug的代码
2010/12/28 Javascript
javascript string字符串优化问题
2011/07/31 Javascript
js弹出div并显示遮罩层
2014/02/12 Javascript
jquery新的绑定事件机制on方法的使用方法
2014/04/15 Javascript
jQuery的deferred对象使用详解
2016/09/25 Javascript
JavaScript reduce和reduceRight详解
2016/10/24 Javascript
JavaScript 数组的深度复制解析
2016/11/02 Javascript
vue实现点击图片放大效果
2017/08/15 Javascript
js断点调试心得分享(必看篇)
2017/12/08 Javascript
解决layer弹出层中表单不起作用的问题
2019/09/09 Javascript
JS手写一个自定义Promise操作示例
2020/03/16 Javascript
Swift 3.0在集合类数据结构上的一些新变化总结
2016/07/11 Python
Python黑帽编程 3.4 跨越VLAN详解
2016/09/28 Python
Python 异常处理的实例详解
2017/09/11 Python
python中的插值 scipy-interp的实现代码
2018/07/23 Python
Python将一个Excel拆分为多个Excel
2018/11/07 Python
python用post访问restful服务接口的方法
2018/12/07 Python
Django 路由控制的实现
2019/07/17 Python
python实现单链表的方法示例
2019/09/03 Python
Django 允许局域网中的机器访问你的主机操作
2020/05/13 Python
使用SimpleITK读取和保存NIfTI/DICOM文件实例
2020/07/01 Python
阿根廷旅游网站:almundo阿根廷
2018/02/12 全球购物
铭宣海淘转运:美国、日本、英国转运等全球转运公司
2019/09/10 全球购物
白酒市场开发计划书
2014/01/09 职场文书
电大奖学金获奖感言
2014/08/14 职场文书
出纳工作检讨书范文
2014/12/27 职场文书
求职意向书范本
2015/05/11 职场文书
酒店员工手册范本
2015/05/14 职场文书
2015年大学教师工作总结
2015/05/20 职场文书
浅谈移动端中的视口(viewport)的具体使用
2021/04/13 HTML / CSS
golang 实现并发求和
2021/05/08 Golang