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中var_export与var_dump的区别分析
Aug 21 PHP
php学习笔记 数组遍历实现代码
Jun 09 PHP
PHP 在5.1.* 和5.2.*之间 PDO数据库操作中的不同之处小结
Mar 07 PHP
php中禁止单个IP与ip段访问的代码小结
Jul 04 PHP
php pthreads多线程的安装与使用
Jan 19 PHP
PHP is_array() 检测变量是否是数组的实现方法
Jun 13 PHP
Linux平台php命令行程序处理管道数据的方法
Nov 10 PHP
PHP设计模式之装饰器模式定义与用法简单示例
Aug 13 PHP
PHP二维索引数组的遍历实例分析【2种方式】
Jun 24 PHP
Yii2 queue的队列使用详解
Jul 19 PHP
Laravel框架Blade模板简介及模板继承用法分析
Dec 03 PHP
php swoft框架实例用法
Dec 22 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写的简易聊天室代码
2011/06/04 PHP
PHP的SQL注入过程分析
2012/01/06 PHP
PHP实现图片不变型裁剪及图片按比例裁剪的方法
2016/01/14 PHP
php文件系统处理方法小结
2016/05/23 PHP
php array_merge_recursive 数组合并
2016/10/26 PHP
基于javascript、ajax、memcache和PHP实现的简易在线聊天室
2015/02/03 Javascript
提交按钮的name='submit'引起的js失效问题及原因
2015/02/25 Javascript
JavaScript中数组继承的简单示例
2015/07/29 Javascript
js+css实现上下翻页相册代码分享
2015/08/18 Javascript
JS简单限制textarea内输入字符数量的方法
2015/10/14 Javascript
图解JavaScript中的this关键字
2020/05/28 Javascript
javascript拖拽应用实例
2016/03/25 Javascript
Google 地图API资料整理及详细介绍
2016/08/06 Javascript
微信小程序  Mustache语法详细介绍
2016/10/27 Javascript
JavaScript中setTimeout的那些事儿
2016/11/14 Javascript
浅谈Node.js:理解stream
2016/12/08 Javascript
nodejs socket实现的服务端和客户端功能示例
2017/06/02 NodeJs
js定时器实现倒计时效果
2017/11/05 Javascript
微信小程序中换行空格(多个空格)写法详解
2018/07/10 Javascript
在vue-cli的组件模板里使用font-awesome的两种方法
2018/09/28 Javascript
fetch 如何实现请求数据
2018/12/20 Javascript
JS中的变量作用域(console版)
2020/07/18 Javascript
vue+element-ui JYAdmin后台管理系统模板解析
2020/07/28 Javascript
python pandas 组内排序、单组排序、标号的实例
2018/04/12 Python
Python3 venv搭建轻量级虚拟环境的步骤(图文)
2019/08/09 Python
Python单链表原理与实现方法详解
2020/02/22 Python
对Matlab中共轭、转置和共轭装置的区别说明
2020/05/11 Python
浅析Python 抽象工厂模式的优缺点
2020/07/13 Python
python try...finally...的实现方法
2020/11/25 Python
行政经理岗位职责
2013/11/09 职场文书
一年级班主任寄语
2014/01/19 职场文书
函授自我鉴定范文
2014/02/06 职场文书
生产车间管理制度
2015/08/04 职场文书
小学数学教师研修感悟
2015/11/18 职场文书
某某店铺的开业庆典主持词范本
2019/11/25 职场文书
Python实现Telnet自动连接检测密码的示例
2021/04/16 Python