2016-05-24 32 views
0

Jsonオブジェクトの解析中にJackson ObjectMapperに「エスケープしない」ようにするにはどうすればよいですか?つまり、文字列を 'そのまま'返します。例えば、私のJSONは、このようなものです: "ABWKJ/m3ERpLr" が、私はそれを&を復号化する必要が原因私は」 "ABWKJ \/m3ERpLr" 欲しい:ObjectMapper:Do not escape

{"field_1":"xyz","field_2":"ABWKJ\/m3ERpLr"}

ObjectMapperを通して実行した後、フィールド2値であります'\'バックスラッシュがなくなったため、復号化に失敗します。

MyClass jsonMessage = mapper.readValue(input, MyClass);

など:

MyClass jsonMessage = mapper.readerFor(MyClass).readValue(input.getBytes());

しかし、両方のバージョンが何らかの方法で私の文字列を変更

は、私は次のことを試してみました。私はそれを「そのまま」したい。別のクラスを使うべきですか?

+0

面白いですが、それは私が修正した「編集」問題でした。実際の質問はまだ有効です。 – DilTeam

+0

私はこれを自分で試す時間がありませんが、これはあなたに役立つと思います。[CharacterEscapes](http://wiki.fasterxml.com/CharacterEscapes)。この[ブログ記事](http://www.cowtowncoder.com/blog/archives/2012/08/entry_476.html)では、その使い方について少し話しています。私は、この考え方は '\\'を除いたCharacterEscapesを定義することだと思います。 – DavidS

+0

注: '@Consumes(APPLICATION_JSON)'を使用して解析すると、WebServiceで機能します。消費はパッケージ 'javax.ws.rs'からのものですので、これを行うことができます。私は '@ Consumes'を使用するときにどんなコードが実行されるか分かりません。 – DilTeam

答えて

2

私はそれが少し遅れていることは知っていますが、私は同様の問題がありました。

見つかった解決策は、JsonRawValueを使用してフィールドの生の値を出力しています。あなたはJsonRawValueように、1つの属性を設定した場合、何らかの理由で、あなたは同様に他の属性に注釈を追加する必要があることを

public class MyClass{ 

    private String myField1; 
    private String myField2; 

    @JsonRawValue 
    public String getMyField1() { 
     return myField1; 
    } 

    @JsonRawValue 
    public String getMyField2() { 
     return myField2; 
    } 
} 

は注意してください。

これが問題の最適な解決策であるかどうかは確かではありませんが、問題が解決した場合は、より良い解決策が見つかった場合は教えてください。

関連する問題