2

以下のコードでは、$datastring 変数の JSON が JSONLint で有効な JSON として渡されます。

ただし、PHP の json_encode を使用すると Syntax エラーが発生します。

これを修正するにはどうすればよいですか? スラッシュを削除しようとしましたが、同じエラーが発生します。

$datastring = '[{"Program": 3034370,"Column": "CLI_RID","Value": "1006278"},{"Program": 3034370,"Column": "Filename","Value": "\\\\henery\\1006278\\CONFIRMATION LETTER AVAILABLE.html"},{"Program": 3034370,"Column": "EVENT_CODE","Value": "20120725ZZAQ"},{"Program": 3034370,"Column": "DOC_NAME","Value": "Confirmation Email"},{"Program": 3034370,"Column": "PrintDate","Value": "20120410"},{"Program": 2959623,"Column": "ISSUE","Value": "Res Spring"},{"Program": 2959623,"Column": "FILENAME","Value": "~/Res/Mag.aspx?I=res_spring&P=1006278"}]';
$data = json_decode($datastring, true);

// Define the errors.
$json_errors = array(
    JSON_ERROR_NONE => 'No error has occurred',
    JSON_ERROR_DEPTH => 'The maximum stack depth has been exceeded',
    JSON_ERROR_CTRL_CHAR => 'Control character error, possibly incorrectly encoded',
    JSON_ERROR_SYNTAX => 'Syntax error',
);

if(!$data) {
echo 'Last error : '. $json_errors[json_last_error()]. PHP_EOL. PHP_EOL;
} else {
echo print_r($data, true);
}

ASP.Net ページからこの JSON 文字列を取得します。

4

2 に答える 2

3

phpリテラル定数で文字列を書き出す場合は、すべてのスラッシュを2倍にする必要があります。したがって、元のJSONが次のような場合:

{"foo": "backslash: \\"}

対応するphp文字列リテラルは次のとおりです。

$json = '{"foo": "backslash: \\\\"}';
于 2012-08-14T19:42:57.037 に答える
0

必要なバックスラッシュは少なくはなく、多くなります。PHPは、文字列リテラルで使用しているため、1つのレベル自体を削除します。

于 2012-08-14T19:42:13.230 に答える