org.Apache.httpcomponents
を使用してREST APIを使用しようとしています。これにより、JSON形式のデータがAPIにポストされます。
私は例外を取得しながら
原因:com.fasterxml.jackson.core.JsonParseException:引用符で囲まれていない不正な文字((CTRL-CHAR、コード10)):文字列に含めるには、バックスラッシュを使用してエスケープする必要があります。
その理由は、ctrl-char
がjson文字列に含まれているからです。
これまたは他の解決策を置き換える方法はありますか?
ありがとう!
これは、JSON文字列リテラルに改行(または他の制御文字)がある場合に発生する可能性があります。
{"foo": "bar
baz"}
あなたがデータを生成している場合は、文字列リテラルを作成するときに、実際の改行をエスケープされた"\\n"
に置き換えます。
{"foo": "bar\nbaz"}
を使用して
mapper.configure(Feature.ALLOW_UNQUOTED_CONTROL_CHARS, true);
javadoc を参照してください:
/**
* Feature that determines whether parser will allow
* JSON Strings to contain unquoted control characters
* (ASCII characters with value less than 32, including
* tab and line feed characters) or not.
* If feature is set false, an exception is thrown if such a
* character is encountered.
*<p>
* Since JSON specification requires quoting for all control characters,
* this is a non-standard feature, and as such disabled by default.
*/
Vimなどのテキストエディターを使用して、この問題の原因となる(非表示の)特殊文字またはエスケープ文字があるかどうかを確認することをお勧めします。
または、Windowsを使用している場合は、さらに簡単です... Windowsのメモ帳にコードをコピーして貼り付けるだけで、目に見えない不要なエスケープ文字や改行などが表示される可能性が高くなります。
Salesforceプラットフォームでは、このエラーは/
が原因で発生します。解決策は、これらを//
としてエスケープすることです。