2011-05-09 7 views
0

J'utilise Jackson désérialiser (parse) d'un simple événement JSON, avec le code comme ceci:Jackson: désérialisation (parsing) null Unicode

JsonParser parser = ... // Initialized via JsonFactory for simple JSON String 
ObjectMapper mapper = new ObjectMapper(); 
HashMap<String, Object> attributes = mapper.readValue(parser, 
        new TypeReference<HashMap<String, Object>>() {}); 

Le code fonctionne comme prévu pour plusieurs cas, je l'ai testé contre , sauf lorsque l'entrée JSON contient la valeur null Unicode (\ u0000). Plus spécifiquement, si la chaîne JSON ci-dessus a une paire clé-valeur qui contient Unicode, par ex.

{ 
... (start K-V pairs), 
"UniKey":"\u0000...", 
... (end K-V pairs) 
} 

l'analyseur lit comme suit correctement les « start paires de KV » (qui ne contiennent pas Unicode null) dans les attributs HashMap mais arrête désérialisation immédiatement en rencontrant la valeur Unicode nulle de « UniKey », retournant une valeur vide et jamais l'analyse syntaxique le reste de la chaîne JSON (c'est-à-dire, les "paires de KV de fin"). Y a-t-il un moyen de dire à Jackson d'ignorer Unicode nul en désérialisation?

Répondre

1

Les chaînes contenant null (\ u0000) sont lues/imprimées par certaines méthodes Java et non par d'autres, elles sont donc uniquement tronquées. Donc, la valeur peut effectivement être là, mais pas affichée par quelque chose comme System.out.println().

+0

Cela semble trier, en effet. – PNS

Questions connexes