问题
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