首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在JSon上读取以JSon格式接收的布尔值并写入字符串

如何在JSon上读取以JSon格式接收的布尔值并写入字符串
EN

Stack Overflow用户
提问于 2013-02-26 12:14:10
回答 3查看 26K关注 0票数 5

我从另一个站点接收到此JSON字符串,但无法修改从接收到的内容。该字符串是以$_POST格式接收的,并且是:

代码语言:javascript
复制
[
    {
        "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字符串:

代码语言:javascript
复制
$receive = json_decode(file_get_contents('php://input'));

当我使用print_r($receive)时,我会得到以下结果:

代码语言:javascript
复制
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
    )
)

我可以毫无问题地访问和读取所有数组/对象:

代码语言:javascript
复制
$receive[$i]->clientId;
$receive[$i]->channel;
$connectionType = $receive[$i]->connectionType;
$receive[$i]->id;
$receive[$i]->ext->{'fm.sessionId'};

但{fm.ack}为空

在解码后的JSON字符串中,false值不在""之间。

是否可以访问和读取false值并将其转换为字符串值?

谢谢你的帮助!

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2013-02-26 12:21:05

你可以这样使用它,在JSON格式中,当你计算false值时,它会给你blank,而当你计算true时,它会给你1

代码语言:javascript
复制
$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";   
}
票数 11
EN

Stack Overflow用户

发布于 2015-12-03 22:16:06

我知道这个问题已经有了答案,但值得注意的是,var_dump输出布尔值更好,只是格式化更差。

代码语言:javascript
复制
<pre>
    <?php
        print_r(array(true, false));
        var_dump(array(true, false));
    ?>
</pre>

结果:

代码语言:javascript
复制
Array
(
    [0] => 1
    [1] => 
)
array(2) {
  [0]=>
  bool(true)
  [1]=>
  bool(false)
}
票数 1
EN

Stack Overflow用户

发布于 2017-03-23 12:24:58

这是一个非常简单的。如果使用js生成和传输json,则不以纯形式传递变量,而是:youBoolVar + 0,则false将为0,true为1

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/15081227

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档