簡體   English   中英

json_decode(“ true”)應該返回什么?

[英]What should json_decode(“true”) return?

當我在PHP中嘗試以下操作時:

var_dump(json_decode("123"));

var_dump(json_decode("true"));

我期望的是:

NULL

NULL

但是我實際上得到的是:

int(123)

bool(true)

應該將“ 123”和“ true”視為有效的JSON字符串嗎? 還是實現json_decode()的錯誤?

謝謝。

它們不是有效的JSON文本,但是據記錄json_decode函數能夠處理JSON片段。

請記住,JSON基本上只是JavaScript,實際上只是純文本字符串。 PHP和Javascript都有truefalse常量:

php > var_dump(json_decode(true)); // php constant "true", maps to int 1
int(1)
php > var_dump(json_decode('true')); // php string / javascript constant true
bool(true)
php > var_dump(json_decode('"true"')); // json-encoded string "true"
string(4) "true"

您的"123"可能是PHP字符串,這會導致一些奇怪的情況:

php > var_dump(json_encode(123));
string(3) "123"
php > var_dump(json_encode("123"));
string(5) ""123""   // not quite what you'd expect.
php > var_dump(json_encode('123'));
string(5) ""123""   // also somewhat unexpected


php > var_dump(json_decode(123));
int(123)
php > var_dump(json_decode('123'));
int(123)
php > var_dump(json_decode('"123"'));
string(3) "123"

兩種結果都是正確的。

string(4) "true"

因為JavaScript字符串應轉換回bool(true)。 字符串(3)“ 123”也是如此。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM