php - file_get_contents($url); 輸入json
为情所困
为情所困 2017-05-16 12:58:39
0
10
948

使用file_get_contents($url); 回傳json 使用json_decode 無法解析,該怎麼辦 ,curl 方法也用過,都不管用

为情所困
为情所困

全部回覆(10)
淡淡烟草味

這個問題自己解決了,第三方回傳的資料是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

PHPzhong

首先要確認。回傳的東西是不是json

为情所困

先確定一下你的Json有沒有其他方式的轉義,如果沒有可以用Json格式化校驗工具檢測一下是否有問題。

線上Json格式化校驗工具
http://www.bejson.com/

習慣沉默

沒問題啊,建議樓主仔細檢查檢查

黄舟

仔細檢查JSON資料格式是否正確

熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板