解析json_decode php

时间:2015-03-20 16:58:28

标签: javascript php

我已经阅读了很多关于json_decode的问题,尝试了各种不同的东西,我不能这样做。

这是bittrex api

$apikey='4058';
$apisecret='50860';
$nonce=time();
$uri='https://bittrex.com/api/v1.1/public/getticker?    apikey='.$apikey.'&nonce='.$nonce.'&market=BTC-LTC';
$sign=hash_hmac('sha512',$uri,$apisecret);
$ch = curl_init($uri);
curl_setopt($ch, CURLOPT_HTTPHEADER, array('apisign:'.$sign));
$execResult = curl_exec($ch);
$json = json_decode($execResult,true);

我得到一个输出,现在我只想要“最后”值

{"success":true,"message":"","result":{"Bid":0.00002130,"Ask":0.00003341,"Last":0.00002121}}

我为每个

尝试过
foreach($json->result as $market) {
 $lastPrice = $market->Last;

//this was to see if it was an echo problems, tried storing the last price in the db... I get null
 $collectionGamerActions->update(array('gamer'=>$gamer),
    array('$set'=>array('lastPrice'=>$lastPrice,'reached'=>1)));
 //print "last price is $lastPrice";
}

我试过

$lastPrice = $json->result->Last;

和各种

 $lastPrice = $json[0]['result']['last']

我放弃了php并尝试了javascript,首先对他做出反应,然后解析它

var obj = JSON.stringify(response);
var obj =JSON.parse(obj);
console.log("last is " + obj.result.Last + " obj is " + obj);

没有任何作用......我可以得到我正在做错的方向。

尝试了以下一些建议

    var obj = JSON.stringify(response);
    var json = JSON.parse(response);
    console.log(json.result.Last);

在php端,响应在这里生成

   $execResult = curl_exec($ch);
   $json = json_decode($execResult);

   echo json_decode($json, true);

导致javascript错误      SyntaxError:意外的数字var json = JSON.parse(response);

使用php建议

 $json = json_decode($execResult);

 $json = json_decode($json, true);

 var_dump($json['result']['Last']);

结果为NULL

3 个答案:

答案 0 :(得分:1)

使用时(注意json_decode中的第二个参数):

$json = json_decode($execResult,true);

您将拥有一个关联数组,因此您的值将位于:

$json['result']['last']

请注意,$json->result->Last如果您使用json_decode()而没有第二个参数(默认值false),则会有效。

答案 1 :(得分:0)

我可能误解了你的问题,但是......假设PHP给你上面粘贴的字符串,那么你可以使用JSON.parse(不需要stringify)并从结果对象中获取结果。

var string = '{"success":true,"message":"","result":{"Bid":0.00002130,"Ask":0.00003341,"Last":0.00002121}}';
var json = JSON.parse(string);
console.log(json.result.Last); // 0.00002121

答案 2 :(得分:0)

数组表示法(json_decode()的第二个参数是true):

$string = '{"success":true,"message":"","result": {"Bid":0.00002130,"Ask":0.00003341,"Last":0.00002121}}';

$json = json_decode($string, true);

var_dump($json['result']['Last']);

对象表示法(json_decode()的第二个参数是false):

$string = '{"success":true,"message":"","result":{"Bid":0.00002130,"Ask":0.00003341,"Last":0.00002121}}';

$json = json_decode($string);

var_dump($json->result->Last);