json_encode()とjson_decode()のflags

json_encode

json_encode(mixed $value, int $flags = 0, int $depth = 512): string|false

※空のオブジェクトをencodeする可能性がある場合は、JSON_FORCE_OBJECTを指定しておいた方が良い。

設定するflags内容
JSON_FORCE_OBJECT非連想配列を使用した場合に、配列ではなくオブジェクトを出力します。 出力を受け取る側がオブジェクトを期待しており、配列が空っぽである場合などに特に便利です。
JSON_HEX_QUOTすべての を \u0022 に変換します。
JSON_HEX_TAGすべての < および > をそれぞれ \u003C および \u003E に変換します。
JSON_HEX_AMPすべての & を \u0026 に変換します。
JSON_HEX_APOSすべての を \u0027 に変換します。
JSON_INVALID_UTF8_IGNORE不正な UTF-8 の文字を無視します。 PHP 7.2.0 以降で使用可能です。
JSON_INVALID_UTF8_SUBSTITUTE不正な UTF-8 の文字を、\0xfffd に変換します。 (Unicode の ‘REPLACEMENT CHARACTER’) PHP 7.2.0 以降で使用可能です。
JSON_NUMERIC_CHECK数値形式の文字列を数値としてエンコードします。
JSON_PARTIAL_OUTPUT_ON_ERRORエンコード不可能な値は代替値に置き換え、処理を続行します。
JSON_PRESERVE_ZERO_FRACTIONfloat 型の値を常に float 値としてエンコードするようにします。
JSON_PRETTY_PRINT返される結果の書式を、スペースを使って整えます。
JSON_UNESCAPED_LINE_TERMINATORSJSON_UNESCAPED_UNICODE が指定されると、 行の終端をエスケープされないままにします。 PHP 7.1 より前のバージョンでは、 この定数がなくてもそういう振る舞いをしていました。 PHP 7.1.0 以降で使用可能です。
JSON_UNESCAPED_SLASHES/ をエスケープしません。
JSON_UNESCAPED_UNICODEマルチバイト Unicode 文字をそのままの形式で扱います (デフォルトでは \uXXXX にエスケープします)。
JSON_THROW_ON_ERRORエラーが起きた場合、 json_last_error() や json_last_error_msg() 関数で収集される、 グローバルなエラー状態を設定するかわりに、 JsonException をスローします。 JSON_PARTIAL_OUTPUT_ON_ERRORJSON_THROW_ON_ERROR よりも優先します。 PHP 7.3.0 以降で使用可能です。

json_decode

json_decode(
    string $json,
    ?bool $associative = null,
    int $depth = 512,
    int $flags = 0
): mixed
flags内容
JSON_BIGINT_AS_STRING巨大な整数値を文字列としてデコードします。
JSON_INVALID_UTF8_IGNORE不正な UTF-8 の文字を無視します。 PHP 7.2.0 以降で使用可能です。
JSON_INVALID_UTF8_SUBSTITUTE不正な UTF-8 の文字を、\0xfffd に変換します。 (Unicode の ‘REPLACEMENT CHARACTER’) PHP 7.2.0 以降で使用可能です。
JSON_OBJECT_AS_ARRAYJSON オブジェクトを PHP の配列としてデコードします。 このオプションは json_decode() の第二引数を true に設定して呼び出すことで、自動的に設定できます。
JSON_THROW_ON_ERRORエラーが起きた場合、 json_last_error() や json_last_error_msg() 関数で収集される、 グローバルなエラー状態を設定するかわりに、 JsonException をスローします。 JSON_PARTIAL_OUTPUT_ON_ERRORJSON_THROW_ON_ERROR よりも優先します。 PHP 7.3.0 以降で使用可能です。