Java Jackson JSON解析为映射<;字符串,字符串>;

Java Jackson JSON解析为映射<;字符串,字符串>;,java,json,jackson,Java,Json,Jackson,我需要将JSON解析后的映射传递到具有以下签名的某个方法中: QUEUE.sendMsg(Map<String, String> data); 我想要一张地图,上面有 map.get("name") returns "John", map.get("marked") returns "false", map.get("age") returns "30", map.get("tags") returns "[ \"work\", \"personal\" ]", map.get("

我需要将JSON解析后的映射传递到具有以下签名的某个方法中:

QUEUE.sendMsg(Map<String, String> data);
我想要一张地图,上面有

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来解决这个问题)


谢谢你。

像这样的东西应该有用

final Map<String, Object> input = ...;
final Map<String, String> output = new Map<>(input.size());
final StringWriter writer = new StringWriter();
final StringBuffer buf = writer.getBuffer();
for (final Map.Entry<String, Object> entry : input.entrySet()) {
  try (final JsonGenerator gen = JsonFactory.createJsonGenerator(writer)) {
    gen.writeObject(entry.getValue());
  }
  output.put(entry.getKey(), buf.toString());
  buf.setLength(0);
}
最终地图输入=。。。;
最终地图输出=新地图(input.size());
最终StringWriter编写器=新StringWriter();
final StringBuffer buf=writer.getBuffer();
for(最终的Map.Entry:input.entrySet()){
try(final jsonggenerator=JsonFactory.createjsonggenerator(writer)){
gen.writeObject(entry.getValue());
}
put(entry.getKey(),buf.toString());
buf.设定长度(0);
}

我想您正在寻找
keyAs
。请查看更多详细信息

是的,只要确保传递完整的类型信息,隐式转换就可以工作。比如:

Map<String,String> map = mapper.readValue(jsonSource, new TypeReference<Map<String,String>>() { });
Map Map=mapper.readValue(jsonSource,newtypereference(){});

为什么要将整个JSON对象作为字符串返回(keys、tags、meta)?
Map<String,String> map = mapper.readValue(jsonSource, new TypeReference<Map<String,String>>() { });