我需要将JSON解析出来的map传递给具有以下签名的某个方法:
QUEUE.sendMsg(Map<String, String> data);
很不幸,我无法控制以上方法,Jackson会将解析好的JSON以Map<String, Object>
的形式提供给我。
我需要一个Map<String, String>
,其中:
- 对于原始的JSON类型,我希望其toString()方法返回转换后的值,而非Integer、Long和Boolean等。
- 对于复杂的JSON类型,例如List/Map,在字符串中保留原生的JSON格式。
例如,如果JSON输入为:
{
"name" = "John",
"marked" = false,
"age" = 30,
"tags" = [ "work", "personal" ],
"meta" = { "k1" : "v1", "k2" : "v2" },
}
我需要一个具有
Map<String, String>
的实例。map.get("name") returns "John",
map.get("marked") returns "false",
map.get("age") returns "30",
map.get("tags") returns "[ \"work\", \"personal\" ]",
map.get("meta") returns "{ \"k1\" : \"v1\", \"k2\" : \"v2\" }"
有没有实现这个目标的方法呢?
很不幸,我几乎是Java的新手,并且没有关于Jackson的先前知识(我必须使用Jackson来解决这个问题)。
谢谢。