我有两种方式的json结果。
第一个输出我的外部api:
{"result":"success","totalresults":1,"products":{"product":[{"pid":"1","gid":"1","type":"hostingaccount","name":"product1","description":"product description","module":"directadmin","paytype":"recurring","pricing":{"usd":{"prefix":"","suffix":"USD","msetupfee":"0.00","qsetupfee":"0.00","ssetupfee":"0.00","asetupfee":"0.00","bsetupfee":"0.00","tsetupfee":"0.00","monthly":"-1.00","quarterly":"-1.00","semiannually":"-1.00","annually":"199000.00","biennially":"-1.00","triennially":"-1.00"}},"customfields":{"customfield":[]},"configoptions":{"configoption":[]}}]}}
,第二个是我内部api的输出:
Array
(
[result] => success
[totalresults] => 1
[products] => Array
(
[product] => Array
(
[0] => Array
(
[pid] => 1
[gid] => 1
[type] => hostingaccount
[name] => product1
[description] => <div class="title col-xs-12">Plan BL2</div>
<div class="disk item col-xs-12">5 GB</div>
<div class="bandwidth item col-xs-12">50 GB</div>
<div class="database item col-xs-12">4</div>
<div class="parkdomain item col-xs-12">10</div>
<div class="adddomain item col-xs-12"><i class="icon icon-cancel"></i></div>
<div class="support item col-xs-12"><i class="icon icon-ok"></i></div>
[module] => directadmin
[paytype] => recurring
[pricing] => Array
(
[USD] => Array
(
[prefix] =>
[suffix] => USD
[msetupfee] => 0.00
[qsetupfee] => 0.00
[ssetupfee] => 0.00
[asetupfee] => 0.00
[bsetupfee] => 0.00
[tsetupfee] => 0.00
[monthly] => -1.00
[quarterly] => -1.00
[semiannually] => -1.00
[annually] => 199000.00
[biennially] => -1.00
[triennially] => -1.00
)
)
[customfields] => Array
(
[customfield] => Array
(
)
)
[configoptions] => Array
(
[configoption] => Array
(
)
)
)
)
)
)
在第一个中,我可以通过以下代码打印参数,例如价格:
$url = 'internal api url';
$obj = json_decode(file_get_contents($url), true);
$array = [];
foreach($obj['products'] as $value){
$array[$value[0]['pid']] = $value[0];
}
echo "<div class="price item col-xs-12">'.(int)$array[$atts['aprice']]['pricing']['USD']['annually'].' USD</div>";
但在第二项中没有成功。 有什么帮助吗?
答案 0 :(得分:1)
因为第二个不是JSON字符串。它看起来像PHP数组转储,因此您无法对其进行解码。 您需要在返回之前对数组进行编码以获取您将能够解析的JSON字符串
答案 1 :(得分:0)
尝试将$obj['products']['product'][0]['pricing']['USD']['annually']
与您的内部API一起使用。