PHP解码json

时间:2011-06-07 11:37:41

标签: php json api decode

有人可以在这里帮我解决php解码json吗?我试图解码一个json api url

这就是我现在所拥有的:

  $string = '
    {
        "username": "someusername",
        "unconfirmed_reward": "0.08681793",
        "send_threshold": "0.01000000",
        "confirmed_reward": "0.02511418",
         "workers":
        {
        "bitcoinjol.jason-laptop": {"last_share": 1307389634, "score": "0", "hashrate": 0, "shares": 0, "alive": false},
        "bitcoinjol.david-laptop": {"last_share": 1307443495, "score": "1.7742", "hashrate": 24, "shares": 1, "alive": true},
        "bitcoinjol.pierre-pc": {"last_share": 1307441804, "score": "0", "hashrate": 0, "shares": 0, "alive": true},
        "bitcoinjol.testJol": {"last_share": 0, "score": "0", "hashrate": 0, "shares": 0, "alive": false}
        },
        "wallet": "asdasdjsadajdasjdsajasjdajdajs",
        "estimated_reward": "0.00131061"
    }';

    $json_o = json_decode($string);
    echo $json_o->username;

并且打印出“someusername”但是当我尝试时我无法打印出工人:

echo $json_o->workers->someusername.jason-laptop;

我认为“。”或者我使用的“ - ”无效?

我希望能够打印出每个工作人员,然后打印出waller,用户名和奖励等等。 无论哪种方式使用数组或这些对象。我也尝试将$ String拆分为“,”然后爆炸,但是不能让它工作得很好。

使用php 5.3和IIS 7.5运行Server 2008 R2

5 个答案:

答案 0 :(得分:6)

花括号语法应该有效:

$json_o->workers->{"someusername.jason-laptop"}

答案 1 :(得分:5)

您可以使用Gumbo建议的大括号语法:

$json_o->workers->{"someusername.jason-laptop"}

然而,最好的方法(imo,为了保持一致性)是将结果对象用作关联数组:

$object = json_decode($string, true);

$object['workers']['bitcoinjol.jason-laptop']['last_share']; // 1307389634

答案 2 :(得分:2)

 $json_o = json_decode($string);
 print_r( $json_o->workers->{"bitcoinjol.jason-laptop"} );

答案 3 :(得分:1)

这应该有效:

$json_o->workers['someusername.jason-laptop'];

答案 4 :(得分:1)

-.不是有效的对象属性名称。请尝试使用json_decode($string, true) (真正代表“解码为关联数组”),然后执行$json_o['workers']['someusername.jason-laptop']