質問

私は、ジャクソンがシリアル化中に特殊文字を自動的に逃れること、つまり「/path/」として「/path /」としてシリアル化すると仮定していました。それは事実ではないようです - 少なくとも1.6で箱から出しています:

@Test
public void testJacksonSerialize() throws Exception
{
    ObjectMapper om = new ObjectMapper();
    assertEquals("\\/path\\/", om.writeValueAsString("/path/"));
}

...失敗 - 生成される出力は「/path/」です。私は自分のシリアルを書く必要がありますか、それともジャクソンで特別なチャーが逃げることを可能にする方法はありますか?

ありがとう、-nikita

役に立ちましたか?

解決

ジャクソンは必須のものだけを逃れます。 「/」はあなたが逃げなければならないものではないので、そうではありません。これは、JSON仕様に従って。

さて:絶対に脱出したい場合は、メソッドを使用して「生」コンテンツまたは値を書き込むことができます(その場合、ジャクソンは何も処理せず、出力に文字列をダンプします)。

しかし、あなたは本当にそのような逃亡が必要ですか?一部のジェネレーターはそれを逃れることを知っています(私には知られていない理由で)が、パーサーはそれを期待していないので、スラッシュを無効にしておくのは問題ありません。これは、明らかに逃げなければならないバックスラッシュとは異なります。

他のヒント

Slash "/"は、特別な意味がないため、JSONで逃げる必要はありません。まだJSON 許可します 次の理由で逃げるスラッシュ。

JSONテキストをすぐにダンプした場合u003CSCRIPT> element of an HTML text, you have to make sure that the two-character-sequence "u003C/" does not occur in the text. That sequence would end the script element immediately according to HTML rules. But if the JSON text reads "u003C/", this has the same meaning to JSON while not interferring with HTML rules. Consequently, some JSON generators escape the slash if and only if it's preceded by a less-than-sign.

そうは言っても、私はあなたの質問に対する直接的な答えを知りません(ジャクソンで逃げる方法を絶対に行う方法)。

いくつかのブラウザを使用してツールチップの場合、新しいライン文字は機能しません。動作していない r n動作していないか nが機能していない

ダブルバックスラッシュを使用して文字をスキップします

解決策:「 r n」の代わりに ' r n'を使用します。
それはあなたの問題を解決します。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top