[英]How do I json_decode() this?
我如何json_decode()
file_get_contents
結果?
這是我的代碼。
$resp = file_get_contents('https://auth.login.yahoo.co.jp/yconnect/v1/token', false, $context);
echo "check1 <br />";
var_dump($resp);
$json = json_decode($resp);
echo "check2 <br />";
var_dump($json);
echo $json['access_token'];
結果在這里
檢查1
串(744) “{” 的access_token “:” j9MqiEM.lKjepCGMFdKufPw1UBK_gAlG6qFxvMxHJwbopXfo9LpLUyT1z.YxwFBSydvVSMOqzVI4fX_ZVLVROlNf7ARr08s2tkFMb5_TNq.wp1MmoQm3wJaqF9gxpeQbEz4GYuGJSbDKJTw8LA_XoBNcEbL0ZDeozFEgYxII8gqi_Nfi7UhM5bd7gqV6Sp17rCECQAauZj_jJa6jyADS3me3UYxIKJB2tCJpRM.xCzVhjRWEZPqNiUI5NikXRANrSiTyn_6Z72u2ptW3vnK918TqpPBAdj.P1O5uJAZgKEmLMZLSBEIWIEOUPTJaSvI3qxxk1ItXI_5sZDAQuw.86R3eaSIolGHqWTvpLk3WqnqBvtk6w6qIVcZgJrTFxnjx_x1ijJhKACcnY.jYp6kpxMihe8hOrTEyVj4Swhmq4RUWDhAfIQDNNju5dJCqW82QyYNCQdf0IMW7uIRSvHK1FmTGrEWMv4tpojLtJEf5vnKaDbrxZ0.AB9OSRwhzMkUYkgbiEVCwqyxCy_oEQBB0uVuAL8fOYidPrqv8m.A29j7S9d3Cb7DFh7pQJJGkLzljcC4VkEZADLiPnq_aLZuy0ehb_aTLBoHZ0IUL “ ”token_type“: ”承載“, ”expires_in“: ”3600“,” refresh_token “:”“ ABrQBFdlHzeded4sc.aHygqG0faENua5L865UMVglio2hkbIJAnbY-”}“
'check1'存在,令牌值是var_dump($resp);
但“ check2”不起作用。
所以我認為$json = json_decode($resp);
是失敗的。
我該如何解碼?
謝謝。
這是編碼問題。 您的響應中包含BOM ,但var_dump
未顯示BOM ,但json_encode
未正確處理。
如果您嘗試下一步:
$s = "\xEF\xBB\xBF".'{"access_token":"j9MqiEM.lKjepCGMFdKufPw1UBK_gAlG6qFxvMxHJwbopXfo9LpLUyT1z.YxwFBSydvVSMOqzVI4fX_ZVLVROlNf7ARr08s2tkFMb5_TNq.wp1MmoQm3wJaqF9gxpeQbEz4GYuGJSbDKJTw8LA_XoBNcE$
var_dump($s);
var_dump(json_decode($s));
您將獲得與響應完全相同的結果。
您可以使用標頭來確保在請求期間使用utf-8
編碼,也可以通過以下方法擺脫BOM
:
$bomBinString = pack('H*','EFBBBF');
$s = preg_replace("/^$bomBinString/", '', $s);
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.