2017-05-16 10 views
1

JavaScriptなどのエスケープ文字を使用してJSON文字列を文字列化する方法を見つけようとしています。例えばJSONオブジェクトのコンテンツをJSON文字列にエンコードするにはどうすればよいですか?

-

入力:

{"name":"Error","message":"hello"} 

出力:私はGsonを使用してJSON文字列としてオブジェクトを取得することができていますが、文字列化しない

"{\"name\":\"Error\",\"message\":\"hello\"}" 

(エスケープ文字付き)。

これはJavaで可能ですか?

+0

を生成含まStringインスタンスをシリアル化\\\ "")); ''? – f1sh

+3

https://commons.apache.org/proper/commons-lang/apidocs/org/apache/commons/lang3/StringEscapeUtils.html#escapeJson-java.lang.String- –

+0

@RobinTopperこれは私が探しているものに近い。しかし、JacksonのJsonStringEncoder.quoteAsString()は、JSONの書式設定も訂正できるので、私のためのより良い選択肢だと感じています。 –

答えて

0

あなたは、出力JSON文字列でこれを試すことができます。

String strWithEscChar = output.replaceAll("\"", "\\\\\""); 
1

あなたの入力は、おそらくStringに格納されているテキスト、としてJSONオブジェクトです。あなたは本質的にそのテキストをJSON文字列に変換しようとしています。そうするだけです。引用符(および他の文字)はJSON文字列にエスケープする必要があります

String input = "{\"name\":\"Error\",\"message\":\"hello\"}"; 
System.out.println("Original JSON content: " + input); 
Gson gson = new Gson(); 
String jsonified = gson.toJson(input); 
System.out.println("JSONified: " + jsonified); 

ので、toJsonは適切にその変換を実行します。

上記のコードは、jsonifiedは現在JSON文字列のコンテンツを含む、すなわち

Original JSON content: {"name":"Error","message":"hello"} 
JSONified: "{\"name\":\"Error\",\"message\":\"hello\"}" 

を生成します。ジャクソンで

、プロセスは同じです、ちょうどあなたのJSONオブジェクトのテキスト

ObjectMapper mapper = new ObjectMapper(); 
StringWriter writer = new StringWriter(); 
mapper.writeValue(writer, input); 
jsonified = writer.toString(); 
System.out.println("JSONified: " + jsonified); 

"は、` `strJson.replace( "\""

JSONified: "{\"name\":\"Error\",\"message\":\"hello\"}" 
関連する問題