Сериализация типов массивов и массивов в Джексоне - PullRequest
1 голос
/ 24 февраля 2011

У меня есть задача сериализации класса, такого как RPC-сообщение, в JSON используя Джексона в Java. Я должен сказать, что я новичок в Джексоне. Теперь я пытаюсь сериализовать тип массива в JSON.

У меня есть:

 ObjectMapper mapper = new ObjectMapper(); 

сообщение затем помещается в HashMap (упрощенно)

 LinkedHashMap<String,Object> map = new LinkedHashMap<String, Object>();
 if(msg.getSignal())
     map.put("signal",msg.getMethodName());
 else {
     map.put("method", msg.getMethodName());
     map.put("retT", msg.getReturnType()); //returns Class<?> type
 }

 return mapper.writeValueAsString(wrapper);

для имени метода "add" и типа возврата int [], это приводит к:

{"method":"add","retT":"[I"}

Может ли кто-нибудь помочь мне, как добиться "[int]" вместо "[I"?

1 Ответ

1 голос
/ 25 февраля 2011

Я предполагаю, что msg.getReturnType () возвращает класс;и если так, то Джексон просто вызовет toString () для него.Если это так, вы можете вместо этого сделать преобразование самостоятельно, чтобы получить требуемое фактическое значение String.

Вы также можете немного упростить код, поскольку ObjectMapper имеет метод writeValueAsString ():

return mapper.writeValueAsString(wrapper);

, которая будет внутренне обрабатывать создание StringWriter и JsonGenerator, чтобы добиться того, что вы делаете.

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