2016-06-21 17 views
1

私は、プロパティファイルから値をロードし、gsonメソッドに渡して最終的なjsonオブジェクトに変換します。しかし、プロパティファイルからの値にはgsonが出力に "\"を追加する二重引用符があります。私はウェブ全体をダウンスキャンしましたが、解決策を見つけることができないがgsonで生成された文字列から ""をエスケープまたは削除する方法はありますか?

は、プロパティファイルには私のコードをここで

0110= This is a test for the renewal and the "Renewal no:" 

が含まれています

public String toJSONString(Object object) { 
    GsonBuilder gsonBuilder = new GsonBuilder(); 
    Gson gson = gsonBuilder.create(); 
    //Note object here is the value from the property file 
    return gson.toJson(object); 
} 

これは

"{ResponseCode:0110,ResponseText:This is a test for the renewal and the \"Renewal no:\"}" 

私はないです生成します出力で、リテラルの周りに\を追加したり、それをなぜラップするのかプロパティファイルの値を引用符で囲みます。あなたの質問へのコメントに基づいて

+0

あなたの出力は実際にはJSONではありませんが、 –

+0

@ cricket_007それはJSON文字列です –

+0

@SotiriosDelimanolis私が言っていることは、例えば、ResponseCodeはキーですか?いいえ、それで引用符で囲む必要があります。 –

答えて

3

objectパラメータは、実際に私がなぜ言うことはできませんが、それはあなたのStringが含まれているものだ値

{ResponseCode:0110,ResponseText:This is a test for the renewal and the "Renewal no:"} 

してJava Stringを参照しています。

Stringは、GsonがJSON文字列として解釈する特別なタイプです。 "は、JSON文字列でエスケープする必要がある特殊文字です。つまり、Gsonが実行してJSON文字列を生成します。

"{ResponseCode:0110,ResponseText:This is a test for the renewal and the \"Renewal no:\"}" 
+0

文字列置換を使用してエスケープしようとしましたが、運がありませんでした。私が持っている最高の唯一の近い解決策は、二重引用符自体を削除することですが、私はそれが私の最後の解決策になると思います。私は出力に二重引用符を追加する代わりに、\(スラッシュ)ではなく引用符で値を出力する方法を探しています – sam

+0

@MustafaFarooquiなぜ '' \ ''について心配していますか?これは有効なJSONです。 –

+0

要件に応じて、出力は "Renewal no:"でなく、この\ "Renewal no:\は引用符の代わりに¥が付いています – sam

2

\文字のような特殊文字のエスケープされた「文字列では。あなたは保存できません」大手せずに文字列にします。それがために持っている\」あなたが任意の出力文字列を表示するとき

あなたはスラッシュを削除

のApache Commonsのは、エスケープとアンエスケープ文字列を扱うためのライブラリがあります。。https://commons.apache.org/proper/commons-lang/javadocs/api-2.6/org/apache/commons/lang/StringEscapeUtils.html

+0

私はこのレスポンス= oldResponseを実行しようとしました。表示するために出力に渡す前にreplace( "\\\" "、" \ "")してください。( – sam

+0

Apache Commons String Escape utilsのようなライブラリを使う方が良いでしょう。あなたの正規表現では扱えないケースを扱います。例えば、他のエスケープ文字やUnicodeなどです。 –

関連する問題