在php中实时解析json响应

时间:2014-08-24 12:30:58

标签: php json parsing

我正在研究关于加密货币(比特币等)的金融研究生课程的研究项目。我试图解析由cryptsy(交换加密货币的市场)api(https://www.cryptsy.com/pages/privateapi)产生的JSON响应中的单个对象。我正在使用cryptsy提供的API示例代码,可以在上面提供的URL中找到。我想抓住我的帐户余额为初学者。在这里你的帮助将非常感激。

我得到的回答如下:

Array
(
    [success] => 1
    [return] => Array
        (
            [balances_available] => Array
                (
                    [42] => 0.00000000
                    [AGS] => 0.00000000
                    [ALN] => 0.00000000
                    [ALF] => 0.00000000
                    [AMC] => 0.00000000

My code I am trying to write not working so well:

$result = api_query("getinfo");
$json = file_get_contents($result);
$json2 = json_decode($json, true);
foreach($json2->attachments->balances_available AS $attach) {
    file_put_contents('test.txt', $attach, FILE_APPEND);

}

echo "<pre>".print_r($json2, true)."</pre>";

Error Message:

Warning: file_get_contents() expects parameter 1 to be a valid path, array given in /Users/Aditya/Desktop/PHP-1.php on line 45

Warning: Invalid argument supplied for foreach() in /Users/Aditya/Desktop/PHP-1.php on line 47

非常感谢任何帮助,我遍布每个论坛,而且我不是计算机科学家。再次感谢您的时间和耐心。

1 个答案:

答案 0 :(得分:1)

示例api_query方法已经返回一个数组:

$array = api_query("getinfo");

因此,您需要在$result变量上同时应用file_get_contentsjson_decode

此时它是一个普通数组,所以只有[]访问,没有->属性遍历。无论如何,我不确定它是否包含在["attachments"]中。有关实际结构,请参阅var_dump($array)

你可以循环它:

foreach ($array["attachments"]["balances_available"] as $key => $value) {
    print " $key == $value \n<br>";
}

如果你想将它存储到一个文件中(你可能希望详细说明格式),那么同样附加它:

foreach (/* as seen above*/) {
    file_put_contents(
        'test.txt',
        " $key has $value balance \n",
        FILE_APPEND
    );
}