ALLOW_UNQUOTED_FIELD_NAMES dans la bibliothèque jackon JSON

Je suis en utilisant le jackson bibliothèque de sérialisation/désérialisation vers/à partir de JSON. J'ai besoin que ce JSON a la plus petite taille possible, j'ai donc activé la fonctionnalité ALLOW_UNQUOTED_FIELD_NAMES pour éliminer toutes les citations. Je sais que la suppression des guillemets n'est pas standard, json, mais de faire en json petit est un dur exigence du projet. Le json généré fonctionne, mais quand j'ai essayer de lire la valeur json j'obtiens une exception:

org.codehaus.jackson.JsonParseException:
Caractère inattendu ('9' (code 57)):
m'attendais soit valide, le nom de
caractère (pour les sociétés non cotées nom) ou
double-quote (cité) pour commencer
nom du champ à [Source:
java.io.StringReader@1347d75; ligne: 1,
colonne: 3]

L'exception ci-dessus est levée lorsque j'ai lu ce json:

{90110a2e-febd-470f-afa4-cf7e890d31b9:0,eec652ad-a4d9-4eb1-8d24-7c1a0c29449f:1}

La façon dont je lis c'est:

Map<String, Object> valuesMap = oM.readValue(json, new TypeReference<Map<String, Object>>() {});

et l'objet mappeur-je utiliser à la fois pour la lecture et l'écriture des valeurs est:

private static final ObjectMapper om = new ObjectMapper();
static {
    om.configure(JsonGenerator.Feature.QUOTE_FIELD_NAMES, false);
    om.configure(JsonParser.Feature.ALLOW_UNQUOTED_FIELD_NAMES, true);
    om.configure(SerializationConfig.Feature.WRITE_DATES_AS_TIMESTAMPS, true);
    om.configure(DeserializationConfig.Feature.FAIL_ON_UNKNOWN_PROPERTIES, false);
    om.getSerializationConfig().setSerializationInclusion(JsonSerialize.Inclusion.NON_NULL);
}

J'utilise la version 1.6.3 de Jackson, à la fois l'expéditeur et le récepteur projets. Le besoin de la version de cette fonctionnalité est de 1,2+ donc j'ai pensé que peut-être que je n'utilisais pas cette version, mais mon récepteur est un Ressort de l'application et j'ai vérifié que la bibliothèque installée dans le dossier libs est 1.6.3.

Ce que je fait de mal? Peut-être que cette fonctionnalité ne peut pas être utilisé avec des cartes.

J'ai une autre question, jusqu'à présent, je suis juste l'envoi d'une carte ou de la clé est juste un uuid de la valeur et de la valeur est un nombre. Puis-je avoir des problèmes si je m'en envoyer une valeur avec des caractères spéciaux avec ALLOW_UNQUOTED_FIELD_NAMES fonctionnalité? Sera jackson échapper à ces personnages?

Grâce.

source d'informationauteur Javi | 2011-01-27