php 下的json操作

//W3S上可以看看简介

JSON(JavaScript Object Notation (JavaScript 对象表示法) ) 是一种轻量级的数据交换格式。它基于JavaScript的一个子集。JSON 是存储和交换文本信息的语法。类似 XML。JSON 比 XML 更小、更快,更易解析

JSON - 转换为 JavaScript 对象
JSON 文本格式在语法上与创建 JavaScript 对象的代码相同。
由于这种相似性,无需解析器,JavaScript 程序能够使用内建的 eval() 函数,或者JSON.parse,用 JSON 数据来生成原生的 JavaScript 对象。

语法:
1、对象是一个无序的“‘名称/值’对”集合。
(1)一个对象以“{”(左括号)开始,“}”(右括号)结束。
(2)每个“名称”后跟一个“:”(冒号);
(3)“‘名称/值’ 对”之间使用“,”(逗号)分隔。

例如一个表示人的对象
{
name:"alex",
age:"22";
}
2、数组是值(value)的有序集合
(1)一个数组以"["开始,以"]"结束。
(2)值之间使用","(逗号)分隔。

例如一组学生
{
   student:[
{name:"xiaoa",age:"22"},
{name:"xiaob",age:"24"},
{name:"xiaoc",age:"23"},
]
}

JSON与 XML 相同之处
- JSON 是纯文本
- JSON 具有"自我描述性"(人类可读)
- JSON 具有层级结构(值中存在值)
- JSON 可通过 JavaScript 进行解析
- JSON 数据可使用 AJAX 进行传输

JSON与 XML 不同之处
- 没有结束标签
- 更短
- 读写的速度更快
- 能够使用内建的 JavaScript eval() 方法进行解析
- 使用数组
- 不使用保留字


<html>
<p id="fname"></p>
<p id="fname2"></p>
<p name="fname3"></p>
<script>
var text = {"authors":
[{"fristname":"allen","lastname":"dda"},
{"fristname":"bill","lastname":"gates"},
{"fristname":"catter","lastname":"vances"}],
"singers":{"name":"adkc","xueli":[{"xiaoxue":"qinglin"},
                                  {"chuzhong":"hefu","ernianji":"103"},
                                  {"gaozhong":"yiz"}]}
};

var tt='{"a":"1","c":"3"}';

<!--var ob= eval("("+tt+")");-->
var ob = JSON.parse(tt);

document.getElementById("fname").innerHTML= text.authors[1].fristname;
document.getElementById('fname2').innerHTML = text.singers.xueli[0].xiaoxue;
document.getElementsByName('fname3')[0].innerHTML = ob.a;
</script>
</html>


json 的php操作

json_encode();//json_encode 将php数组转化为json格式的字符串
json_decode();//json_decode 将json格式字符串转化为stdclass的对象 ,若将第二个参数设置为true 则转换为数组
// 注意 json_encode只接受utf-8格式的编码格式,否则中文会丢失为null;
//json的名称必须用双引号引用,最后一个名称/值对后不能有, 符号

$arr = array ( 'name'=>'peter', 'age'=>'23');
$json = json_encode($arr);
echo $json;
// 输出{"name":"peter","age":"23"}
$json = json_decode($arr);
var_dump($json);
//输出  stdClass Object ( [name] => peter [age] => 23 )

 //注意:stdClass是PHP的一个基类,所有的类几乎都继承这个类,所以任何时候都可以被new,可以让这个变量成为一个object。同时,这个基类又有一个特殊的地方,就是没有方法。凡使用new stdClass()的变量,都不可能会出现$a->test()这种方式的使用

$a= new stdclass();
$a->foo='asd';
$a->sex ='a';
var_dump($a);
//输出object(stdClass)#3 (2) { ["foo"]=> string(3) "asd" ["sex"]=> string(1) "a" }


php的serialize()函数可将任意类型数据序列化转化为字节流。
unserialize()对已序列化的字节流还原
$arr= array('peter'=>array("coutry"=>"usa","age"=>12),
            'allen'=>array('coutry'=>'china','age'=>13));

$co=serialize($arr);
echo $co;
//a:2:{s:5:"peter";a:2:{s:6:"coutry";s:3:"usa";s:3:"age";i:12;}s:5:"allen";a:2:{s:6:"coutry";s:5:"china";s:3:"age";i:13;}}

class axic {
var $cccz ="ffcf";
function asdf (){
    echo 'asdf';
}
public $ccz ="ffcf";
}

$c = new axic ();
$cc= serialize ($c);
echo $cc;
//输出O:4:"axic":2:{s:4:"cccz";s:4:"ffcf";s:3:"ccz";s:4:"ffcf";}
$cc = unserialize($cc);
echo $cc->saf();
//输出 asdf

可参见这篇博客
http://blog.csdn.net/nailwl/article/details/5687363
http://blog.csdn.net/nailwl/article/details/5687360


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值