//W3S上可以看看简介
JSON(JavaScript Object Notation (JavaScript 对象表示法) ) 是一种轻量级的数据交换格式。它基于JavaScript的一个子集。JSON 是存储和交换文本信息的语法。类似 XML。JSON 比 XML 更小、更快,更易解析
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>
<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;
$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);
$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
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