2017-03-17 32 views
-2

我有兩種方式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>"; 

但在第二個不成功。 有幫助嗎?

+0

第一個json中的根元素是對象,在第二個數組中。只是一個想法。 –

+1

首先是一個JSON字符串。其次是一個PHP數組。 – RiggsFolly

+0

這裏可能有一個有效的問題(如果php有任何代碼來讀取JSON或PHP,可能會重複),但絕對不會涉及標題中的問題。請考慮[編輯]發佈,以澄清你真正想要什麼(或標記刪除)。 –

回答

1

因爲第二個不是JSON字符串。它看起來像PHP數組轉儲,所以你不能解碼它。 你需要返回獲取JSON字符串,你就可以解析

+0

謝謝,現在如何在此PHP數組轉儲中打印價格(每年)? @Filip –

0

嘗試使用$obj['products']['product'][0]['pricing']['USD']['annually']與您的內部API之前,數組編碼。

+0

如何使用此代碼? –

+0

你如何得到第二個輸出? – SegFault

+0

這是一個whmcs本地api。第一個是外部API(CURL)。更多:https://developers.whmcs.com/api-reference/getproducts/ –