PHP Json解析

墨辰丷
发布: 2018-05-15 16:44:50
原创
6044人浏览过

本篇文章主要介绍PHP Json解析,感兴趣的朋友参考下,希望对大家有所帮助。

 

对于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)。

 

PHPserialize是将变量序列化,返回一个具有变量类型和结构的字符串表达式,说起来两者都是以一种字符串的方式来体现一种数据结构,那它们之间有什么区别呢。

 

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

 

程序1

var test = {"Name":"Peter","Age":20};  
 
document.write(test.Name + ": " + test.Age);
登录后复制


 

显示结果:

 

Peter: 20
登录后复制


 

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

 

当然也可以变得复杂些:

 

程序2

var test = {"User":{"Name":"Peter","Age":20},"Company":"FORD"};  
 
document.write(test.User.Name + ": " + test.Company);
登录后复制


 

显示结果:

 

Peter: FORD
登录后复制


 

这个例子中User元素中包含了NameAge

 

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

 

程序3

var test = [  
           {"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的确是方便很多。

 

下面再来看看PHPserialize函数的作用。

 

程序4

$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;也应该猜得到是整数(integer20

 

再来看一下这个例子:

 

程序5

class test   
{  
  var $var = 0;  
   function add(){  
      echo $var+10;  
   }  
 }   
$unserialize_var = new test;  
$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()方法。

 

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

 

程序6

$arr = array 
       (  
         'Name'=>'Peter',  
          'Age'=>20  
      );      
$jsonencode = json_encode($arr);   
echo $jsonencode;
登录后复制

 

显示结果:

 

{"Name":"Peter","Age":20}
登录后复制


 

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

 

再来看看json_decode的用法。

 

程序7

$var = '{"Name":"Peter","Age":20}';  
 
$jsondecode = json_decode($var);  
 
print_r($jsondecode);
登录后复制


 

显示结果:

 

stdClass Object ( [Name] => Peter [Age] => 20 )
登录后复制


 

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

 

程序8

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


 

显示结果:

 

Array ( [Name] => Peter [Age] => 20 )
登录后复制

 

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

 

通过上面这些例子相信大家对于JSONPHPserializejson_encode都有了初步了解,结合PHPJavascriptJSON以及Ajax就可以完成强大的数据交互功能。

 

 相关推荐:

xamarin用get的方法把json值传给php写的服务端登录页

解析Json字符串方法总结

js传递json参数到controller步骤分析

Find JSON Path Online
Find JSON Path Online

Easily find JSON paths within JSON objects using our intuitive Json Path Finder

Find JSON Path Online 30
查看详情 Find JSON Path Online

以上就是PHP Json解析的详细内容,更多请关注php中文网其它相关文章!

相关标签:
PHP速学教程(入门到精通)
PHP速学教程(入门到精通)

PHP怎么学习?PHP怎么入门?PHP在哪学?PHP怎么学才快?不用担心,这里为大家提供了PHP速学教程(入门到精通),有需要的小伙伴保存下载就能学习啦!

下载
来源:php中文网
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
最新问题
开源免费商场系统广告
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号