Php 如何从API获取JSON数据
我使用了雅虎的符号查找 它以JSON格式返回数据。像下面Php 如何从API获取JSON数据,php,json,yahoo,Php,Json,Yahoo,我使用了雅虎的符号查找 它以JSON格式返回数据。像下面 YAHOO.Finance.SymbolSuggest.ssCallback( { "ResultSet": { "Query": "ya", "Result": [ { "symbol": "YHOO", "name": "Yahoo! Inc.", "exch": "NMS"
YAHOO.Finance.SymbolSuggest.ssCallback(
{
"ResultSet": {
"Query": "ya",
"Result": [
{
"symbol": "YHOO",
"name": "Yahoo! Inc.",
"exch": "NMS",
"type": "S",
"exchDisp": "NASDAQ"
},
{
"symbol": "AUY",
"name": "Yamana Gold, Inc.",
"exch": "NYQ",
"type": "S",
"exchDisp": "NYSE"
},
{
"symbol": "YZC",
"name": "Yanzhou Coal Mining Co. Ltd.",
"exch": "NYQ",
"type": "S",
"exchDisp": "NYSE"
},
{
"symbol": "YRI.TO",
"name": "YAMANA GOLD INC COM NPV",
"exch": "TOR",
"type": "S",
"exchDisp": "Toronto"
},
{
"symbol": "8046.TW",
"name": "NAN YA PRINTED CIR TWD10",
"exch": "TAI",
"type": "S",
"exchDisp": "Taiwan"
},
{
"symbol": "600319.SS",
"name": "WEIFANG YAXING CHE 'A'CNY1",
"exch": "SHH",
"type": "S",
"exchDisp": "Shanghai"
},
{
"symbol": "1991.HK",
"name": "TA YANG GROUP",
"exch": "HKG",
"type": "S",
"exchDisp": "Hong Kong"
},
{
"symbol": "1303.TW",
"name": "NAN YA PLASTIC TWD10",
"exch": "TAI",
"type": "S",
"exchDisp": "Taiwan"
},
{
"symbol": "0294.HK",
"name": "YANGTZEKIANG",
"exch": "HKG",
"type": "S",
"exchDisp": "Hong Kong"
},
{
"symbol": "YAVY",
"name": "Yadkin Valley Financial Corp.",
"exch": "NMS",
"type": "S",
"exchDisp": "NASDAQ"
}
]
}
}
)
我想得到第一个数组数据的结果
我正在尝试使用下面的,但它不适合我
$file = "http://d.yimg.com/autoc.finance.yahoo.com/autoc?query=yahoo&callback=YAHOO.Finance.SymbolSuggest.ssCallback";
$data = file_get_contents($file);
$result = json_decode($data);
我想得到第一个数组符号的结果
我曾经
$result['YAHOO.Finance.SymbolSuggest.ssCallback']['ResultSet']['result']['symbol']
这对我不起作用,请帮助我,我如何从上面的API中获取符号
谢谢
桑吉布试试这个
<?php
$file = "http://d.yimg.com/autoc.finance.yahoo.com/autoc?query=yahoo&callback=YAHOO.Finance.SymbolSuggest.ssCallback";
$data = file_get_contents($file);
$data = mb_substr($data, strpos($data, '{'));
$data = mb_substr($data, 0, -1);
$result = json_decode($data, true);
print_r($result['ResultSet']['Result'][0]);
只需从请求url中删除回调参数。 然后将为您提供一个有效的JSON对象。 例如,在您的情况下,它将是:
而不是:
您的Json无效。您是否应该添加一些注释,以便所有人都知道您在做什么以及如何验证Json?代码是不言自明的。默认情况下,数据以Javascript使用的格式返回。我只是切割一些不需要的部分(比如回调函数)。剩下的是JSON。从这里开始,只需将其解码为数组,您就完成了。是的,我理解您的代码,您的想法很棒:)