PHP是一種十分優秀的編程語言,可以用它構建出非常吸引人的網站。不過,如果在使用PHP的過程中出現了json不對的問題,那么無疑會給開發者帶來十分巨大的困擾。
//下面是調用PHP json_encode()方法生成json字符串的示例代碼
$person = array(
"name" =>"John",
"age" =>30,
"city" =>"New York"
);
echo json_encode($person);
/*
輸出結果為:
{"name":"John","age":30,"city":"New York"}
*/
不過有時候,如果我們在編寫json數據時掉了一個逗號,那么結果就可能會變得非常詭異。例如下面這個例子:
//這里在"New York"后面故意多了個逗號
$person = array(
"name" =>"John",
"age" =>30,
"city" =>"New York",
);
echo json_encode($person);
/*
輸出結果為:
{"name":"John","age":30,"city":"New York",}
*/
從上面的代碼可以看出,json_encode方法在遇到故意多寫的逗號時不會進行錯誤提示或修復,而是直接輸出了不符合JSON規范的字符串。這對開發者來說是非常困擾的,因為我們需要自己去檢查每個JSON字符串是否符合規范。
//下面的代碼就是說明了上述問題
$person1 = array(
"name" =>"John",
"age" =>30,
"city" =>"New York",
);
$person2 = array(
"name" =>"Lucy",
"age" =>25,
"city" =>"Paris"
);
//將兩個人的信息組合成一個JSON字符串
$persons = "[" . json_encode($person1) . "," . json_encode($person2) . ",]";
/*
輸出結果為:
[
{"name":"John","age":30,"city":"New York",},
{"name":"Lucy","age":25,"city":"Paris"}
]
*/
除了故意多寫逗號之外,有時候我們在編寫JSON數據時還會遇到其他問題,比如:
//如果存在中文字符,那么就需要做一些特殊處理
$person = array(
"name" =>"張三",
"age" =>30,
"city" =>"北京"
);
echo json_encode($person, JSON_UNESCAPED_UNICODE);
/*
輸出結果為:
{"name":"張三","age":30,"city":"北京"}
*/
通過上面的示例可以看出,如果使用默認的json_encode方法時,中文字符會被轉義成Unicode編碼。而如果我們想保留中文字符,需要在調用json_encode時指定第二個參數JSON_UNESCAPED_UNICODE。如果你沒有仔細檢查這個問題,在調用接口或者前后端數據交互時就可能會遇到問題。
總的來說,PHP的json編解碼功能十分強大,使用起來也很簡單。但是在實際開發中,有一些小坑需要開發者需要注意,否則就可能會遇到非常棘手的問題。
上一篇python畫心形教程
下一篇java端口和接口