次の最小限の例では、
import com.google.gson.Gson;
import com.google.gson.GsonBuilder;
public class GsonStuff {
public static void main(String[] args) {
GsonBuilder builder = new GsonBuilder();
Gson gson = builder.create();
System.out.println(gson.toJson("Apostrophe: '"));
//Outputs: "Apostrophe: \u0027"
}
}
アポストロフィは、印刷出力でUnicode表現に置き換えられます。ただし、toJson
メソッドから返される文字列には、文字 '\'、 'u'、 '0'、 '0'、 '2'、 '7'が含まれます。
これをjsonでデコードすると実際に機能し、「アポストロフィ:\ u0027」ではなく文字列「アポストロフィ: '」が表示されます。同じ結果を得るには、どのようにデコードすればよいですか?
さらに追加の質問、なぜasなどのランダムなUnicode文字が同様にエンコードされないのですか?
デフォルトでは、gson Unicodeは特定の文字をエスケープします。そのうちの'
1であります。 (見る HTML_SAFE_REPLACEMENT_CHARS
in JsonWriter 完全なリスト。)
これを無効にするには、
builder.disableHtmlEscaping();