【问题标题】:Parsing a Multi Dimensional JSON string from URL从 URL 解析多维 JSON 字符串
【发布时间】:2018-05-09 15:50:09
【问题描述】:

我正在尝试访问从以下 URL 返回的一些 JSON 值:https://api.crypto-bridge.org/api/v1/ticker

基本上,我希望能够获得“id”:“FROST_BTC”(例如)的最后、成交量、询价和出价

现在,我只想将这些内容回显到 php 页面上。

喜欢:

Volume = 0.13
Ask = 0.033
Bid = 0.035
Last = 0.034

由于页面上的数据量很大,我完全不知道该怎么做?有什么想法、例子或读物让我能弄清楚这一点吗?

PHP 是首选,但愿意尝试/学习任何东西。

【问题讨论】:

  • 使用 php curl。您可以通过这种方式获取 json,将其转换为数组,然后您可以随意使用
  • 首先我会检查他们的 API 文档,看看他们是否提供了一种方法来获取特定 id 的数据,而不是获取整个股票代码并最终过滤它。
  • 我有,他们没有。

标签: php json parsing curl


【解决方案1】:

只需使用php curl 尝试这样的操作

<?php
$curl = curl_init();
curl_setopt_array($curl, array(
    CURLOPT_URL => "https://api.crypto-bridge.org/api/v1/ticker",
    CURLOPT_RETURNTRANSFER => true,
    CURLOPT_ENCODING => "",
    CURLOPT_MAXREDIRS => 10,
    CURLOPT_TIMEOUT => 30,
    CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
    CURLOPT_CUSTOMREQUEST => "GET",
));
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
    echo "cURL Error #:" . $err;
} else {
    $response_array = json_decode($response,1);
}
/*
# JUST FOR DEBUGGING PURPOSE
print '<pre>';
print_r($response_array);
print '</pre>';
*/
foreach($response_array as $k=>$v){
    echo "id = {$v['id']}, last = {$v['last']}, volume = {$v['volume']}, ask = {$v['ask']}, bid = {$v['bid']}";
    echo PHP_EOL;  
}
?> 

编辑:根据评论

方式1:打印第一行后使用break;

foreach($response_array as $k=>$v){
    echo "id = {$v['id']}, last = {$v['last']}, volume = {$v['volume']}, ask = {$v['ask']}, bid = {$v['bid']}";
    echo PHP_EOL;  
    break;
}

方式 2 抓取第一行,然后使用循环打印它

$first_row = $response_array[0];
foreach($first_row as $k=>$v){
    echo "$k = $v";
}

方式 3 使用 array_filter() 进行特定行打印

$vacek_required = array_filter($response_array, function ($var) {
    return ($var['id'] == 'WGR_BTC');
});

foreach($vacek_required as $k=>$v){
    echo "$k = $v";
}

【讨论】:

  • 很好,谢谢。如果那是 U 想要显示的唯一一个值,我如何获得 say ... id = WGR_BTC 的一行值?
  • @Vacek 查看我编辑的答案,了解如何仅获得第一行。也可以看看stackoverflow.com/help/someone-answers
  • 谢谢 Sunny,但这不是我想要的第一行,而是中间的某一行。我希望能够获得特定的 ID
  • 哦,我现在看到了,你只需要过滤 WGR_BTC 值
  • foreach($response_array as $k=>$v){ if($v['id'] == "MARCO_BTC") { echo "id = {$v['id']} , 最后 = {$v['last']}, 成交量 = {$v['volume']}, 询价 = {$v['ask']}, 出价 = {$v['bid']}";回声“
    ”;回声 PHP_EOL; } }
猜你喜欢
  • 2015-03-29
  • 1970-01-01
  • 1970-01-01
  • 2013-04-01
  • 1970-01-01
  • 2018-04-13
  • 2021-10-29
  • 1970-01-01
  • 2017-01-26
相关资源
最近更新 更多