我从另一个站点接收到此JSON字符串,但无法修改从接收到的内容。该字符串是以$_POST格式接收的,并且是:
[
{
"clientId":"17295c59-4373-655a-1141-994aec1779dc",
"channel":"\/meta\/connect",
"connectionType":"long-polling",
"ext":{
"fm.ack":false,
"fm.sessionId":"22b0bdcf-4a35-62fc-3764-db4caeece44b"
},
"id":"5"
}
]我用以下代码解码JSON字符串:
$receive = json_decode(file_get_contents('php://input'));当我使用print_r($receive)时,我会得到以下结果:
Array (
[0] => stdClass Object
(
[clientId] => 17295c59-4373-655a-1141-994aec1779dc
[channel] => /meta/connect
[connectionType] => long-polling
[ext] => stdClass Object
(
[fm.ack] =>
[fm.sessionId] => 22b0bdcf-4a35-62fc-3764-db4caeece44b
)
[id] => 5
)
)我可以毫无问题地访问和读取所有数组/对象:
$receive[$i]->clientId;
$receive[$i]->channel;
$connectionType = $receive[$i]->connectionType;
$receive[$i]->id;
$receive[$i]->ext->{'fm.sessionId'};但{fm.ack}为空
在解码后的JSON字符串中,false值不在""之间。
是否可以访问和读取false值并将其转换为字符串值?
谢谢你的帮助!
发布于 2013-02-26 12:21:05
你可以这样使用它,在JSON格式中,当你计算false值时,它会给你blank,而当你计算true时,它会给你1。
$str = '[{"clientId":"17295c59-4373-655a-1141-994aec1779dc","channel":"\/meta\/connect","connectionType":"long-polling","ext":{"fm.ack":false,"fm.sessionId":"22b0bdcf-4a35-62fc-3764-db4caeece44b"},"id":"5"}]';
$arr = json_decode($str,true);
if($arr[0]['ext']['fm.ack']) // suggested by **mario**
{
echo "true";
}
else {
echo "false";
}发布于 2015-12-03 22:16:06
我知道这个问题已经有了答案,但值得注意的是,var_dump输出布尔值更好,只是格式化更差。
<pre>
<?php
print_r(array(true, false));
var_dump(array(true, false));
?>
</pre>结果:
Array
(
[0] => 1
[1] =>
)
array(2) {
[0]=>
bool(true)
[1]=>
bool(false)
}发布于 2017-03-23 12:24:58
这是一个非常简单的。如果使用js生成和传输json,则不以纯形式传递变量,而是:youBoolVar + 0,则false将为0,true为1
https://stackoverflow.com/questions/15081227
复制相似问题