志在指尖
用双手敲打未来

json_decode(php处理json数据)

json_decode

何为json?
简单地说,JSON可以将JavaScript目标中表示的一组数据转换为字符串,然后就可以在函数之间轻松地传递这个字符串,或许在异步应用程序中将字符串从Web客户机传递给服务器端程序.
通俗点讲,它是一种数据的存储格局,就像php序列化后的字符串一样。
它也是一种数据描绘,比如:咱们将一个数组序列化后寄存,就可以很容易的反序列化后应用;json也是如此,只不过它建立的是客户端javascript和服务器端php交互的桥梁。
怎么运用json?
自php5.2开端及之后的版别都内置了json的支撑,主要有两个函数:
json_encode():编码,生成一个json字符串
json_decode():一个解码
留意:经过json_encode()函数编码后,将回来一个json格局的字符串,如:$json='{“a”:1,”b”:2,”c”:3,”d”:4,”e”:5}’;将json格局的字符串输出,将得到一个json格局的javascript目标
2.json事例一:
json_encode的运用:
$arr=array(
‘name’=>’魏艳辉’,
‘nick’=>’为梦飞翔,
‘contact’=>array(
’email’=>’zhuoweida@163.com’,
website’=>’http://zhuoweida.blog.tianya.cn’,
)
);
$json_string=json_encode($arr);
echo$json_string;//json格局的字符串
?>
成果:
{
“name”:”\u9648\u6bc5\u946b”,
“nick”:”\u6df1\u7a7a”,
“contact”:
{
“email”:”shenkongatqqdotcom”,
“website”:”http:\/\/www.chinaz.com”
}
}
提示:输出的数据自身便是json格局的js目标,由于没有带引号,所以在前台页面可以直接将其作为json目标运用
总结:相关数组是依照javascript目标来结构的
剖析:上述事例很简单的将一个数组json化了,需求指出的是在非utf-8编码下,中文字符将不可被encode,成果会出来空值,所以假如你运用gb2312编码编写php代码,那么就需求将包括中文的内容运用iconv或mb系列函数转化为utf-8后在json_encode
3.json事例二:
json_decode的运用:
$arr=array(
‘name’=>’魏艳辉’,
‘nick’=>’为梦飞翔’,
‘contact’=>array(
’email’=>’zhuoweida@163.com’,
‘website’=>’http://zhuoweida.blog.tianya.cn’,
)
);
$json_string=json_encode($arr);
$obj=json_decode($json_string);//可以运用$obj->name拜访目标的特点
$arr=json_decode($json_string,true);//将第二个参数为true时将转化为数组
print_r($obj);
print_r($arr);
?>
成果:
{
“name”:”\u9648\u6bc5\u946b”,
“nick”:”\u6df1\u7a7a”,
“contact”:
{
“email”:”shenkongatqqdotcom”,
“website”:”http:\/\/www.chinaz.com”
}
}
总结:相关数组是依照JavaScript目标来结构的
提示:输出的数据自身便是json格局的js目标,由于没有带引号,所以在前台页面可以直接将其作为json目标运用
剖析:编码后就要解码,php供给了相应的函数json_decode,履行此函数后,将会得到一个目标或数组。
4.json事例三:
当和前台交互的时分,json的效果就显示出来了:
例如:javascript代码如下:
代码剖析:上面代码,直接将json格局数据赋给一个变量,它就变成一个javascript目标了,这样咱们可以很方便的对obj进行遍历
提示:在javascript中,数组的拜访是经过索引来拜访的;目标特点的拜访是经过目标名.特点名来拜访的
提示:输出的数据自身便是json格局的js目标,由于没有带引号,所以在前台页面可以直接将其作为json目标运用
5.json事例四:json跨域的数据调用:
例如:主调文件index.html
例如:被调用文件profile.php
$arr=array(
‘name’=>’魏艳辉’,
‘nick’=>’为梦飞翔’,
‘contact’=>array(
’email’=>’zhuoweida@163.com’,
‘website’=>’http://zhuoweida.blog.tianya.cn’,
)
);
$json_string=json_encode($arr);
echo”getProfile($json_string)”;
?>
代码剖析:当index.html调用profile.php,json字符串生成,并作为参数传入getProfile,然后将昵称插入到div中,这样一次跨域数据交互就完成了
6.js怎么解析服务器端回来的json字符串?
咱们在运用ajax做客户端和服务器端交互的时分,在不适用jQuery等结构的前提下,一般的做法是让服务器端回来一段json字符串,然后在客户端将它解析成javascript目标。解析时用到的办法一般是eval或许是newfunction,而目前ie8和firefox3.1有内置了原生的json目标。
例1:
varstrTest='{“a”:”b”}’;//转换成JS目标
varobj=eval(“(“+strTest+”)”);
例2:
functionstrtojson(strTest){
JSON.parse(str);
}
7.事例五:目标的json化
//1.目标
classJsonTest{
var$id=1;
var$name=’heiyeluren’;
$gender=’男’;
}
$obj=newJsonTest;
echojson_encode($obj).”
“;
?>
浏览器输出成果:
{
“id”:1,
“name”:”heiyeluren”,
“gender”:”\u7537″
}
定论:目标的json字符串是依照javascript目标来结构的。无法辨认中文,一切的中文字符串没有被正确显示出来
剖析:上述事例很简单的将一个数组json化了,需求指出的是在非utf-8编码下,中文字符将不可被encode,成果会出来空值,所以假如你运用gb2312编码编写php代码,那么就需求将包括中文的内容运用iconv或mb系列函数转化为utf-8后在json_encode
提示:输出的数据自身便是json格局的js目标,由于没有带引号,所以在前台页面可以直接将其作为json目标运用
8.事例六:索引数组的json化
$arr1=array(1,’heiyeluren’,’男’);
echojson_encode($arr1).”
“;
?>
浏览器输出成果:
1,
“heiyeluren”,
“\u7537”
]
定论:纯数字索引数组的json字符串是依照javascript可以辨认的数组来存储的,而不是依照javascript可以辨认的目标来存储的。无法辨认中文,一切的中文字符串没有被正确显示出来
剖析:上述事例很简单的将一个数组json化了,需求指出的是在非utf-8编码下,中文字符将不可被encode,成果会出来空值,所以假如你运用gb2312编码编写php代码,那么就需求将包括中文的内容运用iconv或mb系列函数转化为utf-8后在json_encode
9.事例七:相关数组的json化
$arr2=array(“id”=>1,”name”=>’heiyeluren’,”gender”=>’男’);
echojson_encode($arr2).”
“;
?>
浏览器输出成果:
{
“id”:1,
“name”:”heiyeluren”,
“gender”:”\u7537″
}
定论:相关索引数组的json字符串是依照javascript目标的形式来结构的。无法辨认中文,一切的中文字符串没有被正确显示出来
剖析:上述事例很简单的将一个数组json化了,需求指出的是在非utf-8编码下,中文字符将不可被encode,成果会出来空值,所以假如你运用gb2312编码编写php代码,那么就需求将包括中文的内容运用iconv或mb系列函数转化为utf-8后在json_encode
提示:输出的数据自身便是json格局的js目标,由于没有带引号,所以在前台页面可以直接将其作为json目标运用
10.事例八:对多维索引数组的进行json化
$arr3=array(array(1,’heiyeluren’,’男’),array(1,’heiyeluren’,’男’));
echojson_encode($arr3).”
“;?>
浏览器输出成果:
[
[1,”heiyeluren”,”\u7537″],
[1,”heiyeluren”,”\u7537″]
]
定论:多维数字索引数组的json字符串是依照javascript可以辨认的数组来存储的。无法辨认中文,一切的中文字符串没有被正确显示出来
剖析:上述事例很简单的将一个数组json化了,需求指出的是在非utf-8编码下,中文字符将不可被encode,成果会出来空值,所以假如你运用gb2312编码编写php代码,那么就需求将包括中文的内容运用iconv或mb系列函数转化为utf-8后在json_encode
提示:输出的数据可以直接将其作为javascript数组运用
php处理json数据
JSON是一种标准的轻量级数据交换格式,它能够快速、容易地解析和生成。
与XML相同,JSON是一种根据文本的格式,易于编写且易于理解,但与XML不同,JSON数据结构占用的带宽少于XML版别。JSON根据两个根本结构:
目标:被界说为键/值对的调集(即key:value),每个目标以左大括号“{”最初,以右大括号“}”完毕,多个键/值对之间由逗号“,”分隔。
数组:被界说为有序的值列表,数组以左括号“[”最初,以右括号“]”完毕,值以逗号“,”分隔。
在JSON,键总是字符串,而值能够是string,number,true或许false,null甚至是object或许array。字符串必须用双引号括起来,并且能够包含转义字符,如\n,\t和\。JSON目标或许如下所示:
{
“book”:{
“name”:”PHP从入门到精通”,
“author”:”明日科技”,
“year”:2017,
“type”:”php编程”,
“bestseller”:true
}
}
而JSON数组的示例如下所示:
{
“fruits”:[
“Apple”,
“Banana”,
“Strawberry”,
“Mango”
]}
能够看出,JSON的数据结构与PHP数组是非常相似的。下面我们来了解php怎么解析JSON数据?
PHP具有内置函数能够用来编码和解码JSON数据,能够实现这些功用分别是json_encode()函数和json_decode()函数。注:这两个函数仅适用于UTF-8编码的字符串数据中。json

在PHP中编码JSON数据

在PHP中,json_encode()函数用于将值编码为JSON格式。被编码的值能够是除资源之外的任何PHP数据类型,如数据库或文件句柄。下面的示例演示怎么将PHP相关数组编码为JSON目标:
//相关数组
$marks=array(“Peter”=>65,”Harry”=>80,”John”=>78,”Clark”=>90);
echojson_encode($marks);
?>
上面示例的输出如下所示:
同样,你能够将PHP索引数组编码为JSON数组,例:
//索引数组
$colors=array(“红”,”绿”,”蓝”,”橙”,”黄”);
echojson_encode($colors);
?>
上面示例的输出如下所示:
你还能够运用JSON_FORCE_OBJECT选项强制json_encode()函数将PHP索引数组作为JSON目标回来,如下例所示:
//索引数组
$colors=array(“红”,”绿”,”蓝”,”橙”);
echojson_encode($colors,JSON_FORCE_OBJECT);
?>
上面示例的输出如下所示:
正如上面的示例所介绍的,非相关数组能够编码为数组或目标。可是,相关数组一直编码为目标。
用PHP解码JSON数据
解码JSON数据就像编码它相同简单。你能够运用PHPjson_decode()函数将JSON编码的字符串转换为恰当的PHP数据类型。以下示例演示怎么将JSON目标解码或转换为PHP目标。
//在PHP变量中存储JSON数据
$json='{“Peter”:65,”Harry”:80,”John”:78,”Clark”:90}’;
var_dump(json_decode($json));
?>
上面示例的输出将如下所示:
默认情况下,json_decode()函数将回来一个目标。可是,你也能够挑选指定第二个参数$assoc,这个参数将接受一个布尔值,当JSON目标设置为true时,该值将被解码为相关数组;而false是默认值。我们来看一个例子:
//在PHP变量中存储JSON数据
$json='{“Peter”:65,”Harry”:80,”John”:78,”Clark”:90}’;
var_dump(json_decode($json,true));
?>
上面示例的输出将如下所示:
现在让我们再来看一个示例,它将向你展现怎么解码JSON数据并访问PHP中JSON目标或数组的各个元素。
//将JSON编码的字符串分配给PHP变量
$json='{“Peter”:65,”Harry”:80,”John”:78,”Clark”:90}’;
//将JSON数据解码为PHP相关数组
$arr=json_decode($json,true);
//Accessvaluesfromtheassociativearray
echo$arr[“Peter”];//Output:65
echo$arr[“Harry”];//Output:80
echo$arr[“John”];//Output:78
echo$arr[“Clark”];//Output:90
//将JSON数据解码为PHP目标
$obj=json_decode($json);
//回来目标的访问值
echo$obj->Peter;//Output:65
echo$obj->Harry;//Output:80
echo$obj->John;//Output:78
echo$obj->Clark;//Output:90
?>

未经允许不得转载:IT技术网站 » json_decode(php处理json数据)
分享到: 更多 (0)

评论 抢沙发

评论前必须登录!

 

志在指尖 用双手敲打未来

登录/注册IT技术大全

热门IT技术

C#基础入门   SQL server数据库   系统SEO学习教程   WordPress小技巧   WordPress插件   脚本与源码下载