使用file_get_contents($url); 回傳json 使用json_decode 無法解析,該怎麼辦 ,curl 方法也用過,都不管用
這個問題自己解決了,第三方回傳的資料是ascll的所以需要轉換成utf-8格式 就可以了,跟json_decode沒關係
你需要校驗格式是否正確, 不BB上代碼:
<?php function treatJsonString($string) { $jsonData = json_decode($string, true); switch (json_last_error()) { case JSON_ERROR_NONE: return $jsonData; break; case JSON_ERROR_DEPTH: print '[Error] - Maximum stack depth exceeded' . PHP_EOL; break; case JSON_ERROR_STATE_MISMATCH: print '[Error] - Underflow or the modes mismatch' . PHP_EOL; break; case JSON_ERROR_CTRL_CHAR: print '[Error] - Unexpected control character found' . PHP_EOL; break; case JSON_ERROR_SYNTAX: print '[Error] - Syntax error, malformed JSON' . PHP_EOL; break; case JSON_ERROR_UTF8: print '[Error] - Malformed UTF-8 characters, possibly incorrectly encoded' . PHP_EOL; break; default: print '[Error] - Unknown error' . PHP_EOL; break; } return null; } $jsonString = '{"x":123,"s":[{"a":"1"}]'; var_dump(treatJsonString($jsonString));
先你看下你的這個json是不是正常的json格式然後看看你的php檔案是否為utf-8 無BOM的以前也遇到過類似的問題,去掉bom以後就好使了~
把回傳的資料寄上來看看
沒問題啊,我就解析了出來:
json_decode($json, true)
帶true表示解析成為php的array
首先要確認。回傳的東西是不是json
先確定一下你的Json有沒有其他方式的轉義,如果沒有可以用Json格式化校驗工具檢測一下是否有問題。
線上Json格式化校驗工具http://www.bejson.com/
沒問題啊,建議樓主仔細檢查檢查
仔細檢查JSON資料格式是否正確
這個問題自己解決了,第三方回傳的資料是ascll的所以需要轉換成utf-8格式 就可以了,跟json_decode沒關係
你需要校驗格式是否正確, 不BB上代碼:
先你看下你的這個json是不是正常的json格式
然後看看你的php檔案是否為utf-8 無BOM的
以前也遇到過類似的問題,去掉bom以後就好使了~
把回傳的資料寄上來看看
沒問題啊,我就解析了出來:
帶true表示解析成為php的array
首先要確認。回傳的東西是不是json
先確定一下你的Json有沒有其他方式的轉義,如果沒有可以用Json格式化校驗工具檢測一下是否有問題。
線上Json格式化校驗工具
http://www.bejson.com/
沒問題啊,建議樓主仔細檢查檢查
仔細檢查JSON資料格式是否正確