38

次の最小限の例では:

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 でデコードすると実際に機能し、"Apostrophe: \u0027" ではなく "Apostrophe: '" という文字列が得られます。同じ結果を得るには、どのようにデコードすればよいですか?

追加の質問として、なぜ ش などのランダムな Unicode 文字が同様にエンコードされないのでしょうか?

4

2 に答える 2

62

デフォルトでは、gson Unicode は特定の文字をエスケープしますが、そのうちの'1 つです。(完全なリストについては、 JsonWriterHTML_SAFE_REPLACEMENT_CHARSを参照してください。)

これを無効にするには、次のようにします。

builder.disableHtmlEscaping();
于 2012-07-06T11:27:18.793 に答える