【问题标题】:Use HTTP_Request response content使用 HTTP_Request 响应内容
【发布时间】:2014-07-10 19:55:19
【问题描述】:

我有一个 HTTP_Request2_Response 变量,当我使用 $response->getBody() 回显时,它会给我这个:

{"results":["element1","element2","element3"],"id":"elementID"}

有没有什么方法可以获取$respons["id"] 这样的每个元素?有没有办法将这些结果转换成json对象?

【问题讨论】:

    标签: php json http-request


    【解决方案1】:

    当然。 json_decode() 是你要找的函数:

    <?php
    
    $str = "{\"results\":[\"element1\",\"element2\",\"element3\"],\"id\":\"elementID\"}";
    
    $obj = json_decode($str);
    
    print_r($obj);
    
    ?>
    

    生产:

    stdClass Object
    (
        [results] => Array
            (
                [0] => element1
                [1] => element2
                [2] => element3
            )
    
        [id] => elementID
    )
    

    由于它作为对象返回,因此您可以作为公共成员访问元素。换句话说:$obj-&gt;id 会给你'elementID'

    或者作为一个数组:

    $array = json_decode($str, true);
    
    print_r($array);
    

    生产:

    Array
    (
        [results] => Array
            (
                [0] => element1
                [1] => element2
                [2] => element3
            )
    
        [id] => elementID
    )
    

    echo $array['id']; 给出elementID

    【讨论】:

    • 非常感谢,但是如果不知道元素的数量(element1,element2,...)并且其数量可能不同怎么办。有没有更灵活的方式来获取它们?
    • 这取决于你想要做什么。您应该像处理任何其他未知长度的数组一样处理它。
    • 我不想手动编辑字符串然后获取它的 json 文件,我想定义一个模式,例如定义我有“results”和“id”的值,然后获取它们类似 results[0] 的值
    • 没有任何字符串的手动编辑。我包含了字符串作为函数如何工作的演示。您可以使用这个:json_decode($response-&gt;getBody()),并将其视为一个对象(或数组,带有额外的参数)。
    猜你喜欢
    • 2012-09-19
    • 2017-05-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-04-28
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多