热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

PHP使用JSON实例分析详解

JSON是一种轻量级别的数据交互格式,他可以方便快捷的提交网络的应用,相对于xml来讲json可读性不强,但要在数据传输上要优于xml哦,下面我们看几个实例。在PHP编码JSON(json_en...
JSON是一种轻量级别的数据交互格式,他可以方便快捷的提交网络的应用,相对于xml来讲json可读性不强,但要在数据传输上要优于xml哦,下面我们看几个实例。

在PHP编码JSON(json_encode)

PHP json_encode()函数用于在PHP JSON编码。这个函数成功返回JSON表示的值,失败则返回FALSE。

语法:

string json_encode ( $value [, $optiOns= 0 ] )参数:

value: 即将编码的值,此函数只适用于UTF-8编码的数据。

options: 这个可选的值是一个位掩码,由JSON_HEX_TAG JSON_HEX_QUOT,JSON_HEX_AMP,JSON_HEX_APOS,JSON_NUMERIC_CHECK,JSON_PRETTY_PRINT,JSON_UNESCAPED_SLASHES,JSON_FORCE_OBJECT

例子

下面的例子演示了如何用PHP数组转换成JSON:

 1,
    'b' => 2,
    'c' => 3,
    'd' => 4,
    'e' => 5
);
echo json_encode($arr);
?>

在执行过程中,这将产生以下结果:

{"a":1,"b":2,"c":3,"d":4,"e":5}

下面的示例显示如何将PHP对象可以转换成JSON:

name = "sachin";
$e->hobbies = "sports";
$e->birthdate = date('m/d/Y h:i:s a', "8/5/1974 12:20:03 p");
$e->birthdate = date('m/d/Y h:i:s a', strtotime("8/5/1974 12:20:03"));
echo json_encode($e);
?>

在执行过程中,这将产生以下结果:

{"name":"sachin","hobbies":"sports","birthdate":"08/05/1974 12:20:03 pm"}

解码JSON在PHP(json_decode)

PHP json_decode()函数用于解码JSON在PHP。这个函数返回值从json解码成适当的 PHP类型。

语法:

mixed json_decode ($json [,$assoc = false [, $depth = 512 [, $optiOns= 0 ]]])参数:

json_string: 它必须是UTF-8编码的数据编码的字符串

assoc: 这是一个布尔类型参数设置为TRUE时,返回的对象将被转换成关联数组

depth: 它是一个整数类型的参数,它指定递归深度

options: 它是一个整数类型的位掩码JSON解码,支持JSON_BIGINT_AS_STRING

例子

下面的示例显示了如何可以使用PHP来解码JSON对象:

在执行过程中,这将产生以下结果:

object(stdClass)#1 (5) {
["a"] => int(1)
["b"] => int(2)
["c"] => int(3)
["d"] => int(4)
["e"] => int(5)
}
array(5) {
["a"] => int(1)
["b"] => int(2)
["c"] => int(3)
["d"] => int(4)
["e"] => int(5)
}

假如我们获取的JSON数据如下:(可以使用curl、fsockopen等方式获取)

{
"translation":["Hello world"],
"query":"你好世界",
"errorCode":0,
"web":[
{
"value":["hello world"],
"key":"你好世界"
},
{
"value":["Hello World"],
"key":"世界你好"
}
]
}

用json_decode函数返回array的方式得到:

Array
(
[translation] => Array
(
[0] => Hello world
)
[query] => 你好世界
[errorCode] => 0
[web] => Array
(
[0] => Array
(
 [value] => Array
  (
   [0] => hello world
  )
 [key] => 你好世界
)
[1] => Array
(
 [value] => Array
  (
   [0] => Hello World
  )
 [key] => 世界你好
)
)
)

我们在PHP语言中可以用以下方法取得我们想要的值:

" . $jsondata['translation'][0]; //Hello world
echo "
" . $jsondata['query']; //你好世界 echo "
" . $jsondata['web'][0]['value'][0]; //hello world echo "
" . $jsondata['web'][1]['key']; //世界你好 ?>

例,结合数据库操作











请注意两种方法生成的对象数组在结构上的区别

法一';
//假设以下数组是根据我们从数据库读取的数据生成的
$jarr = array(
    'total' => 239,
    'row' => array(
        array(
            'code' => '001',
            'name' => '中国www.phprm.com',
            'addr' => 'Address 11',
            'col4' => 'col4 data'
        ) ,
        array(
            'code' => '002',
            'name' => 'Name 2',
            'addr' => 'Address 12',
            'col4' => 'col4 data'
        ) ,
    )
);
//法一:
$jobj = new stdclass(); //实例化stdclass,这是php内置的空类,可以用来传递数据,由于json_decode后的数据是以对象数组的形式存放的,
//所以我们生成的时候也要把数据存储在对象中
foreach ($jarr as $key => $value) {
    $jobj->$key = $value;
}
print_r($jobj); //打印传递属性后的对象
echo '使用$jobj->row[0]['code']输出数组元素:' . $jobj->row[0]['code'] . '
'; echo '编码后的json字符串:' . json_encode($jobj) . '
'; //打印编码后的json字符串 echo '
'; //法二: echo '

法二

'; echo '编码后的json字符串:'; echo $str = json_encode($jarr); //将数组进行json编码 echo '
'; $arr = json_decode($str); //再进行json解码 print_r($arr); //打印解码后的数组,数据存储在对象数组中 echo '使用$arr->row[0]->code输出数组元素:' . $arr->row[0]->code; ?>


本文地址:

转载随意,但请附上文章地址:-)

推荐阅读
  • 本文介绍了前端人员必须知道的三个问题,即前端都做哪些事、前端都需要哪些技术,以及前端的发展阶段。初级阶段包括HTML、CSS、JavaScript和jQuery的基础知识。进阶阶段涵盖了面向对象编程、响应式设计、Ajax、HTML5等新兴技术。高级阶段包括架构基础、模块化开发、预编译和前沿规范等内容。此外,还介绍了一些后端服务,如Node.js。 ... [详细]
  • 本文介绍了如何使用jQuery和AJAX来实现动态更新两个div的方法。通过调用PHP文件并返回JSON字符串,可以将不同的文本分别插入到两个div中,从而实现页面的动态更新。 ... [详细]
  • 本文介绍了在开发Android新闻App时,搭建本地服务器的步骤。通过使用XAMPP软件,可以一键式搭建起开发环境,包括Apache、MySQL、PHP、PERL。在本地服务器上新建数据库和表,并设置相应的属性。最后,给出了创建new表的SQL语句。这个教程适合初学者参考。 ... [详细]
  • 在说Hibernate映射前,我们先来了解下对象关系映射ORM。ORM的实现思想就是将关系数据库中表的数据映射成对象,以对象的形式展现。这样开发人员就可以把对数据库的操作转化为对 ... [详细]
  • 本文介绍了使用cacti监控mssql 2005运行资源情况的操作步骤,包括安装必要的工具和驱动,测试mssql的连接,配置监控脚本等。通过php连接mssql来获取SQL 2005性能计算器的值,实现对mssql的监控。详细的操作步骤和代码请参考附件。 ... [详细]
  • 本文介绍了Java后台Jsonp处理方法及其应用场景。首先解释了Jsonp是一个非官方的协议,它允许在服务器端通过Script tags返回至客户端,并通过javascript callback的形式实现跨域访问。然后介绍了JSON系统开发方法,它是一种面向数据结构的分析和设计方法,以活动为中心,将一连串的活动顺序组合成一个完整的工作进程。接着给出了一个客户端示例代码,使用了jQuery的ajax方法请求一个Jsonp数据。 ... [详细]
  • Jquery 跨域问题
    为什么80%的码农都做不了架构师?JQuery1.2后getJSON方法支持跨域读取json数据,原理是利用一个叫做jsonp的概念。当然 ... [详细]
  • 本文介绍了DataTables插件的官方网站以及其基本特点和使用方法,包括分页处理、数据过滤、数据排序、数据类型检测、列宽度自动适应、CSS定制样式、隐藏列等功能。同时还介绍了其易用性、可扩展性和灵活性,以及国际化和动态创建表格的功能。此外,还提供了参数初始化和延迟加载的示例代码。 ... [详细]
  • Allegro总结:1.防焊层(SolderMask):又称绿油层,PCB非布线层,用于制成丝网印板,将不需要焊接的地方涂上防焊剂.在防焊层上预留的焊盘大小要比实际的焊盘大一些,其差值一般 ... [详细]
  • 前言:关于跨域CORS1.没有跨域时,ajax默认是带cookie的2.跨域时,两种解决方案:1)服务器端在filter中配置详情:http:blog.csdn.netwzl002 ... [详细]
  • 如何实现织梦DedeCms全站伪静态
    本文介绍了如何通过修改织梦DedeCms源代码来实现全站伪静态,以提高管理和SEO效果。全站伪静态可以避免重复URL的问题,同时通过使用mod_rewrite伪静态模块和.htaccess正则表达式,可以更好地适应搜索引擎的需求。文章还提到了一些相关的技术和工具,如Ubuntu、qt编程、tomcat端口、爬虫、php request根目录等。 ... [详细]
  • Java验证码——kaptcha的使用配置及样式
    本文介绍了如何使用kaptcha库来实现Java验证码的配置和样式设置,包括pom.xml的依赖配置和web.xml中servlet的配置。 ... [详细]
  • 高质量SQL书写的30条建议
    本文提供了30条关于优化SQL的建议,包括避免使用select *,使用具体字段,以及使用limit 1等。这些建议是基于实际开发经验总结出来的,旨在帮助读者优化SQL查询。 ... [详细]
  • 工作经验谈之-让百度地图API调用数据库内容 及详解
    这段时间,所在项目中要用到的一个模块,就是让数据库中的内容在百度地图上展现出来,如经纬度。主要实现以下几点功能:1.读取数据库中的经纬度值在百度上标注出来。2.点击标注弹出对应信息。3 ... [详细]
  • 我将SpringMVC升级到Spring3.2.5.我的一些剩余调用即使存在,也会返回无法识别的字段异常.这是错误.Resolvingexceptionfrom ... [详细]
author-avatar
安仔小窝forever
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有