Джексон: десериализация (разбор) нулевой Unicode - PullRequest
1 голос
/ 09 мая 2011

Я использую Джексона для десериализации (анализа) простого события JSON с кодом, подобным следующему:

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>>() {});

Код работает, как и ожидалось, для нескольких случаев, с которыми я его проверял, кроме случаев, когда JSONinput содержит нулевое значение Unicode (\ u0000).

В частности, если в приведенной выше строке JSON есть пара ключ-значение, содержащая Unicode, например,

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

, анализатор правильно читает все«запуск пар KV» (которые не содержат нулевого Unicode) в атрибутах HashMap, но немедленно останавливает десериализацию при обнаружении нулевого значения Unicode «UniKey», возвращая пустое значение и никогда не анализируя остальную часть строки JSON (то есть конецKV-пары ").

Есть ли способ сказать Джексону, чтобы он игнорировал нулевой Unicode при десериализации?

1 Ответ

1 голос
/ 10 мая 2011

Строки, содержащие ноль (\ u0000), считываются / печатаются некоторыми методами Java, а не другими, поэтому они отображаются только как усеченные. Таким образом, значение может быть на самом деле, но не отображаться чем-то вроде System.out.println ().

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...