2017-10-19 45 views
0

這是我在stackoverflow上的第一個問題。如何在PHP中使用來自json響應的PayPal Hateoas鏈接?

我正在尋找一種方式來使用(解析)的JSON響應HATEOAS鏈接,像這樣:

{ 
    "links": [{ 
    "href": "https://api.paypal.com/v1/payments/sale/36C38912MN9658832", 
    "rel": "self", 
    "method": "GET" 
    }, { 
    "href": "https://api.paypal.com/v1/payments/payment/PAY-5YK922393D847794YKER7MUI", 
    "rel": "parent_payment", 
    "method": "GET" 
    }] 
} 

得到這些鏈接,使用PHP,像這樣:

GET https://api.paypal.com/v1/payments/sale/36C38912MN9658832 

我已經搜索了幾個小時來找到一個解決方案,但只有點擊如何創建一個Hateoas鏈接。

我知道如何將json轉換爲數組,但我不知道如何在PHP中編寫可用的鏈接。

我的目標是使用該鏈接從PayPal檢索詳細信息。

編輯
我看到我不夠清楚。 例如,我想從json中'rel'=='self'獲取url和方法。

希望你們中的一個能幫助我。

預先感謝您。

+0

你想從JSON的HREF? –

+0

@Arun Kumaresh感謝您的回覆。我想從json解析url和相應的方法以在cURL請求中使用它。 – marlon1215

回答

0

經過一系列試驗和錯誤,我設法自己找到了解決方案。

這是可以做到用array_filter(array_map())是這樣的:

$key = 'rel'; 
$val = 'self'; 

$links_array = json_decode('{ 
    "links": [{ 
    "href": "https://api.paypal.com/v1/payments/sale/36C38912MN9658832", 
    "rel": "self", 
    "method": "GET" 
    }, { 
    "href": "https://api.paypal.com/v1/payments/payment/PAY-5YK922393D847794YKER7MUI", 
    "rel": "parent_payment", 
    "method": "GET" 
    }] 
}'); 

$arr_filtered = array_filter(array_map(function($elem) use ($key, $val) { 
    if ($elem[$key] == $val) { return $elem; } 
}, $links_array['links'])); 

echo 'array filtered: ', var_dump($arr_filtered); 
echo 'wanted array: ', var_dump($arr_filtered[0]); 

這導致:

array(3) { ["href"]=> string(57) "https://api.paypal.com/v1/payments/sale/36C38912MN9658832" ["rel"]=> string(4) "self" ["method"]=> string(3) "GET" } 

但我選擇了老式的foreach循環結束時,像所以:

$link_arr = NULL; 
foreach($links_array['links'] as $linkkey => $linkval) { 
    if ($linkval[$key] == $val) { 
    $link_arr = $linkval; 
    break; 
    } 
} 

echo 'link-arr: ',var_dump($link_arr); 

這給了我同樣的結果。

因此我的問題解決了。