对于JSON(JavaScript Object Notation)大家应该不陌生,它是一种轻量级的数据交换格式。易于人阅读和编写。同时也易于机器解析和生成。它基于JavaScript Programming Language, Standard ECMA-262 3rd Edition - December 1999的一个子集。JSON采用完全独立于语言的文本格式,但是也使用了类似于C语言家族的习惯(包括C, C++, C#, Java, JavaScript, Perl, Python等)。这些特性使JSON成为理想的数据交换语言。

JSON建构于两种结构:

“名称/值”对的集合(A collection of name/value pairs)。不同的语言中,它被理解为对象(object),纪录(record),结构(struct),字典(dictionary),哈希表(hash table),有键列表(keyed list),或者关联数组 (associative array)。

值的有序列表(An ordered list of values)。在大部分语言中,它被理解为数组(array)。

PHP的serialize是将变量序列化,返回一个具有变量类型和结构的字符串表达式,

说起来两者都是以一种字符串的方式来体现一种数据结构,那它们之间有什么区别呢。

先从JSON说起,看一个简单的实例。

例一:

vartest={"Name":"Peter","Age":20};

document.write(test.Name+":"+test.Age);

显示结果:

Peter:20

变量test中{"Name":"Peter","Age":20}为一个有2个元素的对象(感觉就像PHP的数组):

Name为Peter,Age为20。

当然也可以变得复杂些。

例二:

vartest={"User":{"Name":"Peter","Age":20},"Company":"FORD"};

document.write(test.User.Name+":"+test.Company);

显示结果:

Peter: FORD

这个例子中User元素中包含了Name和Age。

如果要体现多个User,则需要使用数组,区别于对象的"{}",数组使用"[]"。

例三:

vartest=[

{"User":{"Name":"Peter","Age":20},"Company":"FORD"},

{"User":{"Name":"Li Ming","Age":20},"Company":"Benz"}

];

document.write(test[1].User.Name+":"+test[1].Company);//或者使用:document.write(test[1]["User"]["Name"] + ": " + test[1]["Company"]);

显示结果:

Li Ming: Benz

通过以上简单实例就能将一些复杂数据通过一个字符串来进行传递,再配合上Ajax的确是方便很多。

下面再来看看PHP的serialize函数的作用。

例四:

$arr=array('Peter'=>array('Country'=>'USA','Age'=>20),'Li Ming'=>array('Country'=>'CHINA','Age'=>21)

);$serialize_var=serialize($arr);echo$serialize_var;

显示结果:

a:2:{s:5:"Peter";a:2:{s:7:"Country";s:3:"USA";s:3:"Age";i:20;}s:7:"Li Ming";a:2:{s:7:"Country";s:5:"CHINA";s:3:"Age";i:21;}}

这个结果看上去比JSON要复杂一些,其实也很简单,它说明的就是一些数据类型和结构。

以a:2:{s:7:"Country";s:3:"USA";s:3:"Age";i:20;}为例:

a:2说明这是个有两个元素的数组(array),

s:7:"Country";s:3:"USA";为第一个元素,s:7说明这是有7个字符的字符串(string),

后面i:20;也应该猜得到是整数(integer)20。

再来看一下这个例子,

例五:

classtest

{var$var=0;functionadd(){echo$var+10;

}

}$unserialize_var=newtest;$serialize_var=serialize($unserialize_var);echo$serialize_var;$unserialize_var=null;$unserialize_var=unserialize($serialize_var);$unserialize_var->add();

显示结果:

O:4:"test":1:{s:3:"var";i:0;}10

从这个例子中可以看出来,serialize对数据的类型和结构都进行的保存,

unserialize后的变量仍然可以使用add()方法。

那么PHP和JSON有没有联系呢,熟悉PHP的朋友应该了解PHP5.2.0已经将JSON extension设置为默认组件,也就是说我们可以在PHP中进行JSON操作,其函数为json_encode和json_decode。

例六:

$arr=array('Name'=>'Peter','Age'=>20);$jsonencode=json_encode($arr);echo$jsonencode;

显示结果:

{"Name":"Peter","Age":20}

这个结果和例一中test值是一样的,通过json_encode将PHP中的变量转换为JSON字符出表达式。

再来看看json_decode的用法。

例七:

$var='{"Name":"Peter","Age":20}';$jsondecode=json_decode($var);print_r($jsondecode);

显示结果:

stdClassObject( [Name]=>Peter [Age]=>20)

这的确验证了,在JSON中{"Name":"Peter","Age":20}是一个对象,但是在PHP中也可以将其转为数组,在json_decode中将ASSOC参数设置为True即可。

例八:

$var='{"Name":"Peter","Age":20}';$jsondecode=json_decode($var,true);print_r($jsondecode);

显示结果:

Array( [Name]=>Peter [Age]=>20)

另,需要注意的是JSON是基于Unicode格式,所以要进行中文操作要将其转化为UTF-8格式。

通过上面这些例子相信大家对于JSON和PHP的serialize、json_encode都有了初步了解,

结合PHP、Javascript、JSON以及Ajax就可以完成强大的数据交互功能。

相关参考资料:

PHP JSON Functions: http://cn.php.net/manual/en/ref.json.php

JSON Introduction:http://www.json.org/json-zh.html网友实例: http://www.only4.cn/archives/95             http://www.openphp.cn/blog.php?blog_id=12

java php serialize_PHP serialize JSON 解析相关推荐

  1. java php serialize_PHP serialize 和 JSON 解析与区别

    PHP serialize 和 JSON 解析与区别 对于JSON(JavaScript Object Notation)大家应该不陌生,它是一种轻量级的数据交换格式.易于人阅读和编写.同时也易于机器 ...

  2. PHP serialize JSON 解析

    对于JSON(JavaScript Object Notation)大家应该不陌生,它是一种轻量级的数据交换格式.易于人阅读和编写.同时也易于机器解析和生成.它基于JavaScript Program ...

  3. java jsonpath过滤_JSONPATH json解析工具

    2.json-path 快速入门 一.json-path中的操作符 二.json-path中可以使用的函数 三.过滤操作符 3.maven依赖 com.jayway.jsonpath json-pat ...

  4. java中的json_JAVA中的四种JSON解析方式详解

    JAVA中的四种JSON解析方式详解 我们在日常开发中少不了和JSON数据打交道,那么我们来看看JAVA中常用的JSON解析方式. 1.JSON官方 脱离框架使用 2.GSON 3.FastJSON ...

  5. JSON解析(详细)

    1. 了解JSON 简介:JSON(JavaScript Object Notation),即JS对象简谱 , 是一种轻量级的数据交换格式. 进一步理解: JSON和JavaScript的关系:两者之 ...

  6. java json解码器_Jackson:我是最牛掰的 Java JSON 解析器(有点虚)

    在当今的编程世界里,JSON 已经成为将信息从客户端传输到服务器端的首选协议,可以好不夸张的说,XML 就是那个被拍死在沙滩上的前浪. 很不幸的是,JDK 没有 JSON 库,不知道为什么不搞一下.L ...

  7. Java常用的几种JSON解析工具

    一.Gson:Google开源的JSON解析库 1.添加依赖 <!--gson--> <dependency><groupId>com.google.code.gs ...

  8. Jackson:我是最牛掰的 Java JSON 解析器(有点虚)

    在当今的编程世界里,JSON 已经成为将信息从客户端传输到服务器端的首选协议,可以好不夸张的说,XML 就是那个被拍死在沙滩上的前浪. 很不幸的是,JDK 没有 JSON 库,不知道为什么不搞一下.L ...

  9. Java下利用Jackson进行JSON解析和序列化

    Java下利用Jackson进行JSON解析和序列化 转载于:https://www.cnblogs.com/jing1617/p/7009122.html

最新文章

  1. 平方变换载波同步 matlab,matlab源码-costas载波同步环.docx
  2. 【C# 复习总结】类、继承和接口
  3. Linux下shel脚本之批量修改文件扩展名
  4. DP:Sumsets(POJ 2229)
  5. Python除了人工智能,还能从事哪些工作?
  6. 还没使用过Web Worker,推荐一款开源工具Workerize,快速上手
  7. 开发者的福利,报名即可领取代金券,赢运动手环
  8. layui表格使用复选框批量删除_LayUI表格批量删除方法
  9. 推荐一个PPT挣钱路子,日赚800-1000元
  10. 如何下载谷歌浏览器官方最新离线安装包
  11. jmeter连接mysql并定义变量提供给后续接口使用
  12. iPhonexs文件连接服务器,iPhonexs黑屏了教你如何快速解决!
  13. 生活中的算法的实际举例_生活中的算法
  14. 使用SCCM管理Office ProPlus(二)--升级最到最新更新
  15. 计算机电源 自动关机,电脑自动关机是什么原因,小编教你怎么解决电脑自动关机...
  16. 30天自制操作系统第1天 - Hello World
  17. 洛谷1262 间谍网络 tarjan缩点
  18. 2012蓝桥杯C++本科 取球游戏
  19. 爱思服务器可以下小组件,iOS14 小组件添加/删除方法教程
  20. 实验3 SQL的复杂多表查询以及视图

热门文章

  1. 从 Beta-Binomial 共轭到 Dirichlet-Multinomial 共轭
  2. 面向对象——类设计(一)
  3. python如何使用本地数据库_使用Python在虚拟机上怎么连接本地数据库
  4. python必背100源代码-100行Python代码实现自动抢火车票(附源码)
  5. 0基础学python要多久-零基础python培训需要学多久?
  6. python-Python 函数
  7. Kaldi 语音识别基础教程
  8. 第I题-生理周期(简单解法跳着试)====人生来就有三个生理周期,分别为体力、感情和智力周期,它们的周期长度为23天、28天和33天。每一个周期中有一天是高峰。在高峰这天,
  9. 超级计算机运行吃鸡,决赛圈的时候,如果两个人同时被手雷炸死该怎么办呢?...
  10. python数字保留两位_Python 鲜为人知的数值格式化