web-dev-qa-db-fra.com

Quelqu'un peut-il clarifier le codage unicode de GSON?

Dans l'exemple minimaliste suivant:

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"
    }   
}

L'Apostrophe est remplacée par une représentation Unicode dans l'impression. Cependant, la chaîne renvoyée à partir de la méthode toJson a littéralement les caractères '\', 'u', '0', '0', '0', '2', '7'.

Décoder avec JSON fonctionne réellement et donne à la chaîne "Apostrophe:" "par opposition à" Apostrophe:\u0027 ". Comment devrais-je décoder pour obtenir le même résultat?

Et une question supplémentaire, pourquoi un caractère unicode aléatoire tel que Ô est-il codé de la même manière?

30
Miquel

Par défaut, GSON Unicode échappe à certains caractères, dont ' est une. (Voir HTML_SAFE_REPLACEMENT_CHARS IN JSONWriter pour la liste complète.)

Désactiver ceci, faites

builder.disableHtmlEscaping();
46
Gustav Barkefors