如何获取json数据?

时间:2019-01-02 21:37:18

标签: php json

我有两个Json文件。我有一个问题要从第二个Json获取数据,具体取决于第一个Json。

我要显示第二个Json的“ changePercent”键,具体取决于第一个Json的“短键”。

“符号”必须与“短”匹配

这是一个php文件。我正在尝试检索实时数据。

第一杰森:

[
{"long":"Microsoft","short":"MSFT"},
{"long":"Facebook","short":"FB"},
{"long":"Frankfurt Dax Index","short":"DAX30"}
]

第二个杰森:

{
"AAPL":{"quote":{"symbol":"AAPL","changePercent":0.04}},
"FB":{"quote":{"symbol":"FB","changePercent":0.03}} 
}

我的代码:

$json1 = $CCWE->feed($CCWE->config->feeds->coincap->front);
$json2 = file_get_contents('json2url');
$obj = json_decode($json2); 

if ( in_array($json1->short , array('AAPL','MSFT'), true ) ) {                                   
echo $obj->{$json1->short}->changePercent;                                   
}

我希望获得changePercent

2 个答案:

答案 0 :(得分:0)

您不需要第一个json。

$json2 = file_get_contents('json2url');

/**
 * Explanation:
 * passing `true` to json_decode will result in an array instead of an object.
 */
foreach ( json_decode($json2, true) as $short=>$data )
{

    if ( in_array($short, ['AAPL', 'MSFT']) ) {
        echo $short . " changed: " . $data['quote']['changePercent'] . "<br>\n";
    }

}

答案 1 :(得分:0)

如果JSON数据符合您的指示,那么$json-short应该会出错,因为$json1是一个数组,并且只能对对象执行->

似乎您想查找对应的键,并在匹配时获取百分比。您可以按照以下步骤进行操作。

foreach($json1 as $obj1)  {
    if (isset($obj->{$obj1->short})) {
        echo $obj1->short . "\n";
        echo $obj->{$obj1->short}->quote->changePercent . "\n";
    }
}