我从另一个站点收到此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
)
)
我可以毫无问题地访问和读取所有Array / Object:
$receive[$i]->clientId;
$receive[$i]->channel;
$connectionType = $receive[$i]->connectionType;
$receive[$i]->id;
$receive[$i]->ext->{'fm.sessionId'};
但是{fm.ack}是空的
在解码的JSON字符串中,false值不在""
之间。
是否可以访问和读取false值并将其转换为字符串值?
感谢您的帮助!
答案 0 :(得分:5)
您可以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";
}
{1}}。
{{1}}的工作示例 的工作示例
答案 1 :(得分:1)
我知道已经有了这个问题的答案,但值得注意的是var_dump
输出布尔值更好,只是格式化的IMO更差。
<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)
}
答案 2 :(得分:0)
这很简单。如果你使用js来生成和传输json,那么传递你的变量不是纯粹的形式,而是:youBoolVar + 0
,那么false将是0,而真正的1