在Jackson中序列化数组类型和数组

时间:2011-02-24 19:55:02

标签: java arrays json serialization jackson

我有一个任务将类似RPC消息的类序列化为JSON 在Java中使用Jackson。我不得不说我是杰克逊的新手。 现在我要做的是将数组类型序列化为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]”而不是“[我”?

1 个答案:

答案 0 :(得分:1)

我假设'msg.getReturnType()'返回Class;如果是这样,Jackson就会调用toString()。如果是这样,你可能希望自己做转换,以获得你想要的实际字符串值。

你也可以稍微简化代码,因为ObjectMapper有'writeValueAsString()'方法:

return mapper.writeValueAsString(wrapper);

将在内部处理StringWriter和JsonGenerator的创建,以实现您的目标。