我正在使用PHP和cURL向API发出请求。
API使用加密字符串进行响应,然后我必须使用json_decode
并通过预定义的解密方法运行它,该方法返回一个字符串。
所以我有这样的事情:
echo $response;
$decodedResponse = json_decode($response, true);
// New instance of Decrypt
$decrypt = new Decrypt();
$decryptedResponse = $decrypt->decrypt($decodedResponse);
echo $decryptedResponse;
使用var_dump($decryptedResponse)
会产生string(960)
但字符串看起来像JSON数组。
{"Title":"Mr","Forenames":"Steve"}
那么撕掉这个字符串以便通过关联数组使用变量的最佳方法是什么?
我已经尝试过了:
foreach(decryptedResponse as $data)
{
echo $data['Title'];
}
但这并没有在屏幕上输出任何内容。
我是否误解了使用json_decode
?
正如许多人所说,似乎你必须解码两次,我会调查并分享我的发现。
答案 0 :(得分:1)
您需要在解密结果
上再次使用json_decode$decodedResponse = json_decode($response, true);
// New instance of Decrypt
$decrypt = new Decrypt();
$decryptedResponse = $decrypt->decrypt($decodedResponse);
$decryptedArry = json_decode($decryptedResponse, true);
var_dump($decryptedArry);
echo $decryptedArry['Title'];
答案 1 :(得分:0)
下面的代码显示json_decode的工作方式与你想要的一样,但似乎你的Decryption类做了一些奇怪的事情。
$response = '{"Title":"Mr","Forenames":"Steve"}';
$decodedResponse = json_decode($response, true);
var_dump($decodedResponse);
echo $decodedResponse["Title"];
答案 2 :(得分:0)
As you told Using `var_dump($decryptedResponse)` yields string(960) but the string looks like a JSON means your decrypt duration convert it again json. You can try bellow code it may resolve your issue
$decodedResponse = json_decode($response, true);
// New instance of Decrypt
$decrypt = new Decrypt();
$decryptedResponse = $decrypt->decrypt($decodedResponse);
$decryptedResponse = json_decode($response, true);
foreach(decryptedResponse as $data)
{
echo $data['Title'];
}