PHP decoding json

老子叫甜甜 提交于 2019-12-01 10:29:09

问题


could anyone here help me with php an decoding json? Im trying to decode a json api url

Here is what I have at the moment:

  $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;

and this prints out "someusername" but I cant get it to print out the workers when I try:

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

I think that the "." or the "-" I am using are invalid?

I would like to be able to print out each worker and then the waller, username and rewards ect.. using arrays or these objects, either way. I have also tried splitting the $String on "," with explode, but cant get that to work nicely either.

running Server 2008 R2 with php 5.3 and IIS 7.5


回答1:


You can use the curly brackets syntax suggested by Gumbo:

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

However, the best way (imo, for consistency) is to use the resulting object as an associative array:

$object = json_decode($string, true);

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



回答2:


The curly braces syntax should work:

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



回答3:


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



回答4:


- or . are not valid object property names. Try instead using json_decode($string, true) (the true stands for "decode as an associative array"), and then do $json_o['workers']['someusername.jason-laptop'].




回答5:


This should work:

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


来源:https://stackoverflow.com/questions/6264598/php-decoding-json

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!