这两个json输出有什么区别?

时间:2017-03-17 23:55:44

标签: php json

我有两种方式的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>";

但在第二项中没有成功。 有什么帮助吗?

2 个答案:

答案 0 :(得分:1)

因为第二个不是JSON字符串。它看起来像PHP数组转储,因此您无法对其进行解码。 您需要在返回之前对数组进行编码以获取您将能够解析的JSON字符串

答案 1 :(得分:0)

尝试将$obj['products']['product'][0]['pricing']['USD']['annually']与您的内部API一起使用。