PHP技術者認定・上級

問題 (2019年9月18日)

【JSON】

以下のコードの出力として正しいものを1つ次の記述の中から選択せよ。

$json[] '{"PHPExam": "PHP Examination Team"}';
$json[] "{'PHPExam': 'PHP Examination Team'}";
foreach ($json as $string) {
    echo 'Decoding: $string;
    json_decode($string);
    switch (json_last_error()) {
        case JSON_ERROR_NONE:
            echo No errors';
        break;
        case JSON_ERROR_DEPTH:
            echo Maximum stack depth exceeded';
        break;
        case JSON_ERROR_STATE_MISMATCH:
            echo Underflow or the modes mismatch';
        break;
        case JSON_ERROR_CTRL_CHAR:
            echo Unexpected control character found';
        break;
        case JSON_ERROR_SYNTAX:
            echo Syntax error, malformed JSON';
        break;
        case JSON_ERROR_UTF8:
            echo Malformed UTF-8 characters, possibly incorrectly encoded';
        break;
        default:
            echo Unknown error';
        break;
    }
    echo PHP_EOL;
}

○ 2. 正解です!

【解説】 1つ目のデータは正しくデコードできるが、2つ目のデータは間違った json 文字列で、構文エラーとなる。
エラー値は定数で次のものが定義されている。

JSON_ERROR_NONE   エラーはなし    
JSON_ERROR_DEPTH  スタックの深さの最大値を超え   
JSON_ERROR_STATE_MISMATCH  JSONの形式が無効、あるいは壊れている   
JSON_ERROR_CTRL_CHAR  制御文字エラー。おそらくエンコーディングの違い   
JSON_ERROR_SYNTAX  構文エラー   
JSON_ERROR_UTF8  不正な形式のUTF-8文字。おそらくエンコードの失敗

Copyright(c) 2011-2019 PHP Engineer Recognition Agency. All rights reserved.
ITトレメの問題や解答、サービスに関するお問い合せはこちらまで
@IT自分戦略研究所フォーラム 新着記事
- PR -