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初学者头疼问题总结
Oct 09 PHP
怎样在UNIX系统下安装php3
Oct 09 PHP
PHP 5.3.1 安装包 VC9 VC6不同版本的区别是什么
Jul 04 PHP
PHP高自定义性安全验证码代码
Nov 27 PHP
使用Linux五年积累的一些经验技巧
Jun 20 PHP
递归删除一个节点以及该节点下的所有节点示例
Mar 19 PHP
PHP实现将视频转成MP4并获取视频预览图的方法
Mar 12 PHP
深入了解PHP中的Array数组和foreach
Nov 06 PHP
浅谈PHP的排列组合(如输入a,b,c 输出他们的全部组合)
Mar 14 PHP
PHP多线程模拟实现秒杀抢单
Feb 07 PHP
PHP实现动态创建XML文档的方法
Mar 30 PHP
分享8个Laravel模型时间戳使用技巧小结
Feb 12 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
桌面中心(三)修改数据库
2006/10/09 PHP
深入理解PHP之数组(遍历顺序)  Laruence原创
2012/06/13 PHP
codeigniter教程之上传视频并使用ffmpeg转flv示例
2014/02/13 PHP
分享常见的几种页面静态化的方法
2015/01/08 PHP
PHP+MySQL插入操作实例
2015/01/21 PHP
php检测文本的编码
2015/07/26 PHP
php原生数据库分页的代码实例
2019/02/18 PHP
javascript 表格排序和表头浮动效果(扩展SortTable)
2009/04/07 Javascript
Javascript学习笔记之 对象篇(一) : 对象的使用和属性
2014/06/24 Javascript
Bootstrap组件学习之导航、标签、面包屑导航(精品)
2016/05/17 Javascript
JS中正则表达式只有3种匹配模式(没有单行模式)详解
2016/07/28 Javascript
使用JavaScript判断手机浏览器是横屏还是竖屏问题
2016/08/02 Javascript
酷! 不同风格页面布局幻灯片特效js实现
2021/02/19 Javascript
使用MUI框架模拟手机端的下拉刷新和上拉加载功能
2017/09/04 Javascript
除Console.log()外更多的Javascript调试命令
2018/01/24 Javascript
Vue 中的受控与非受控组件的实现
2018/12/17 Javascript
详解关于element级联选择器数据回显问题
2019/02/20 Javascript
详解javascript函数写法大全
2019/03/25 Javascript
js console.log打印对象时属性缺失的解决方法
2019/05/23 Javascript
[43:14]Liquid vs Optic 2018国际邀请赛淘汰赛BO3 第二场 8.21
2018/08/22 DOTA
python使用线程封装的一个简单定时器类实例
2015/05/16 Python
使用 Python 实现微信群友统计器的思路详解
2018/09/26 Python
Python 把序列转换为元组的函数tuple方法
2019/06/27 Python
python 实现让字典的value 成为列表
2019/12/16 Python
浅谈在JupyterNotebook下导入自己的模块的问题
2020/04/16 Python
Sneaker Studio捷克:购买运动鞋
2018/07/08 全球购物
Christys’ Hats官网:英国帽子制造商
2018/11/28 全球购物
美丽的珠宝配饰:SmallThings
2019/09/04 全球购物
亚洲航空公司官方网站:AirAsia
2019/11/25 全球购物
中专生自我鉴定
2013/12/17 职场文书
会计试用期自我评价
2014/09/19 职场文书
逃课打麻将检讨书
2014/10/05 职场文书
2014年行政助理工作总结
2014/11/19 职场文书
2014年小学工作总结
2014/11/26 职场文书
golang json数组拼接的实例
2021/04/28 Golang
vue使用Google Recaptcha验证的实现示例
2021/08/23 Vue.js