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 相关文章推荐
php生成局部唯一识别码LUID的代码
Oct 06 PHP
Destoon旺旺无法正常显示,点击提示“会员名不存在”的解决办法
Jun 21 PHP
PHP的魔术常量__METHOD__简介
Jul 08 PHP
php防止站外远程提交表单的方法
Oct 20 PHP
THINKPHP2.0到3.0有哪些改进之处
Jan 04 PHP
php相对当前文件include其它文件的方法
Mar 13 PHP
php读取txt文件并将数据插入到数据库
Feb 23 PHP
PHP合并数组的2种方法小结
Nov 24 PHP
微信小程序 消息推送php服务器验证实例详解
Mar 30 PHP
PHP基于MySQLI函数封装的数据库连接工具类【定义与用法】
Aug 11 PHP
PHP排序算法之基数排序(Radix Sort)实例详解
Apr 21 PHP
php文件上传原理与实现方法详解
Dec 20 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高效获取远程图片尺寸和大小的实现方法
2017/10/20 PHP
通过DOM脚本去设置样式信息
2010/09/19 Javascript
高效的表格行背景隔行变色及选定高亮的JS代码
2010/12/04 Javascript
qTip2 精致的基于jQuery提示信息插件
2012/02/17 Javascript
extjs3 combobox取value和text案例详解
2013/02/06 Javascript
键盘上一张下一张兼容IE/google/firefox等浏览器
2014/01/28 Javascript
jQuery中toggleClass()方法用法实例
2015/01/05 Javascript
JavaScript AOP编程实例
2015/06/16 Javascript
深入理解JavaScript的React框架的原理
2015/07/02 Javascript
详解JavaScript中数组的相关知识
2015/07/29 Javascript
学习javascript面向对象 理解javascript原型和原型链
2016/01/04 Javascript
探索Javascript中this的奥秘
2016/12/11 Javascript
非常优秀的JS图片轮播插件Swiper的用法
2017/01/03 Javascript
微信小程序开发之数据存储 参数传递 数据缓存
2017/04/13 Javascript
javaScript canvas实现(画笔大小 颜色 橡皮的实例)
2017/11/28 Javascript
解决Vue调用springboot接口403跨域问题
2019/09/02 Javascript
python实现根据窗口标题调用窗口的方法
2015/03/13 Python
Python编程之序列操作实例详解
2017/07/22 Python
python 统计一个列表当中的每一个元素出现了多少次的方法
2018/11/14 Python
利用Python的turtle库绘制玫瑰教程
2019/11/23 Python
基于python的列表list和集合set操作
2019/11/24 Python
Python求平面内点到直线距离的实现
2020/01/19 Python
让Django的BooleanField支持字符串形式的输入方式
2020/05/20 Python
python解压zip包中文乱码解决方法
2020/11/27 Python
Intimissimi德国网上商店:意大利知名内衣品牌
2018/04/03 全球购物
Wiggle新西兰:自行车、跑步、游泳
2020/05/06 全球购物
毕业生造价工程师求职信
2013/10/17 职场文书
就业自荐书
2013/12/05 职场文书
大学自主招生自荐信
2013/12/16 职场文书
学生干部学习的自我评价
2014/02/18 职场文书
继承公证书样本
2014/04/04 职场文书
土建工程师岗位职责
2014/06/10 职场文书
2015年“7.11”世界人口日宣传活动方案
2015/05/06 职场文书
党员干部学习心得体会
2016/01/23 职场文书
Java字符串逆序方法详情
2022/03/21 Java/Android
win10电脑右下角输入法图标不见了?Win10右下角不显示输入法的解决方法
2022/07/23 数码科技