お知らせ
2023.12.5(Tue)
目次
JSONデータを取得して、サーバー上で処理するバッチでエラーログが出力されていました。今回はそのエラーの対処法を紹介します。
エラーが発生した場合にバッチからメールを送信するようにしていましたが、下記のエラーが出力されていました。
Illegal unquoted character ((CTRL-CHAR, code 9)): has to be escaped using backslash to be included in string value
エラー発生時のプログラム
ObjectMapper mapper = new ObjectMapper(); JsonNode root = mapper.readTree(str);
エラー発生時の開発環境は以下のとおりです。
| 言語 | Java1.7.0_51 |
|---|
取得したJSONデータに、エスケープされていないタブ文字が入っていたためにエラーとなっていました。
JSONデータ内のタブ文字をエスケープすることで解消されます。エラーに記述されている”CTRL-CHAR”は、コントロールキャラクタ(制御文字)を表しています。
今回は”code 9″ですので、タブを表しています。下記の表に制御文字も合わせて記載しますので、エラーの状況に合わせてご確認ください。
| \” | ダブルクォーテーション (code 34/0x22) |
|---|---|
| \\ | バックスラッシュ (code 92/0x5c) |
| \/ | スラッシュ (code 47/0x2f) |
| \b | バックスペース (code 8/0x08) |
| \f | 改ページ (code 12/0x0c) |
| \r | ラインフィード (code 10/0x0a) |
| \n | 改行・キャリジリターン (code 13/0x0d) |
| \t | タブ (code 9/0x09) |
| \uXXXX | 4桁の16進数で表記されたUnicode文字 |
今回は受信したJSONデータがエスケープされておらず受信時にエラーとなりましたが、自分がJSONデータを送信する際にも気をつけなければならないなと感じました。
JSONデータを送信する際には、構文規則通りの文字列を送っているかもきちんと確認してから送りたいですね。