我有一个任务将类似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]”而不是“[我”?
答案 0 :(得分:1)
我假设'msg.getReturnType()'返回Class;如果是这样,Jackson就会调用toString()。如果是这样,你可能希望自己做转换,以获得你想要的实际字符串值。
你也可以稍微简化代码,因为ObjectMapper有'writeValueAsString()'方法:
return mapper.writeValueAsString(wrapper);
将在内部处理StringWriter和JsonGenerator的创建,以实现您的目标。