Json格式的所有內(nèi)容
1)并列的數(shù)據(jù)之間用逗號(", ")分隔
2)映射用冒號(": ")表示
3)并列數(shù)據(jù)的集合(數(shù)組)用方括號("[]")表示
4)映射的集合(對象)用大括號("{}")表示
舉例:"北京市的面積為16800平方公里,常住人口1600萬人。上海市的面積為6400平方公里抗蠢,常住人口1800萬。"
寫成json格式就是這樣:
[
{"城市":"北京","面積":16800,"人口":1600},
{"城市":"上海","面積":6400,"人口":1800}
]
1.php程序中json用法
PHP提供json_encode()和json_decode()函數(shù)俯渤,前者用于編碼,后者用于解碼型宝。
1)直接寫json格式并輸出
$json = '[{"name":"sunyan","age":22},{"name":"zhanglan","age":24}]';
$result = json_decode($json);//將json數(shù)據(jù)格式解碼成php數(shù)據(jù)格式并輸出
foreach($result as $key => $value) {
if($value) {
echo "<br>$value->name<br>"." $value->age<br>";
}
}
輸出結(jié)果
sunyan
22
zhanglan
24
2)一維數(shù)組轉(zhuǎn)換成json格式并輸出
$message['login']='login success';
$json_message=json_encode($message);
echo $json_message;
$a=json_decode($json_message);
echo $a->login;
{"login":"login success"}
login success
3)二維數(shù)組轉(zhuǎn)換成json格式并輸出
$list['name']="sunyan";
$list['age']=22;
$list_merge[]=$list;
$list['name']="zhanglan";
$list['age']=24;
$list_merge[]=$list;
$list_json=json_encode($list_merge);
echo $list_json;
輸出結(jié)果
[{"name":"sunyan","age":22},{"name":"sunyan","age":24}]
若想在轉(zhuǎn)變回數(shù)組形式輸出八匠,需將其解碼
$list_j=json_decode($list_json);
數(shù)組輸出方式一:
foreach($list_j as $key=>$v){
echo "$key<ul>";
echo "<li>$v->name</li>";
echo "<li>$v->age</li>";
echo"</ul>";
}
數(shù)組輸出方式二:
foreach($list_merge as $key=>$list){
echo "$key<ul>";
foreach($list as $k=>$v){
echo "<li>$v</li>";
}
echo"</ul>";
}
輸出結(jié)果
0
sunyan
22
1
sunyan
24
注意,沒有經(jīng)過編碼趴酣,解碼的數(shù)組只能方式二輸出
2.js程序中json用法
js與服務(wù)器端進(jìn)行交互的時候梨树,發(fā)送與接受數(shù)據(jù)都可以使用json數(shù)據(jù)格式
1)js 與php程序交互
以注冊為例,若用戶名已經(jīng)有人注冊岖寞,網(wǎng)頁會提醒你更換用戶名
php代碼
function check_name($username){
$dbc=connect_mysql();
if ($dbc){
$q='select * from usermessage where name=?';
$stmt=mysqli_prepare($dbc,$q);
mysqli_stmt_bind_param($stmt,'s',$name);
$name=$username;
mysqli_stmt_execute($stmt);
mysqli_stmt_store_result($stmt);
if(mysqli_stmt_affected_rows($stmt)==1){
$message['check_name']='name exit';
$json_message=json_encode($message);
return $json_message;
}else{
$message['check_name']='name no exit';
$json_message=json_encode($message);
return $json_message;
}
mysqli_stmt_close($stmt);
mysql_close($dbc);
}else{
die('Could not connect: ' . mysql_error());
}
}
js代碼
$("#input_name").blur(function(){
if($("#input_name").val().length<2||$("#input_name").val().length>20){
$("#span_name_error").text("用戶名長度必須是2-20位");
}else{
name=$("#input_name").val().replace(/\s/g,'');//去掉頭尾空格
$.ajax({
type: "post",
dataType: "json",
url: "/todolist/register_handle.php?act=check_name",
data: {username:name},
success: function(json_message){
var data=(eval(json_message)).check_name;
if(data=="name exit"){
$("#span_name_error").text("此用戶名已經(jīng)被注冊");
}else if(data=="name no exit"){
$("#span_name_error").text("");
}
}
});
}
});