您的输入字符串如下所示
{
6138249={
value=[multi2, multi3, multi4],
key=TestMulticat
},
6161782={
value=Traps (Bamboo / Box),
key=Observation gear
}
}
我想在java中的Map<String,Map<String,Object>>
中映射此输入字符串。
由于输入对我来说看起来更神秘,我无法弄清楚如何做同样的事情。
我在ObjectMapper
尝试了jackson
课程,但仍然无法映射。我写的代码看起来像这样
Map<String,Map<String,Object>> data=objectMapper.readValue(singledoc, Map.class);
有人建议我采用这种方法或解决方案,两者都同样有用。
答案 0 :(得分:0)
您的输入看起来不像有效的json,因为它有不带引号的字符串值。 Json看起来像这样:
{
6138249:{
value:["multi2", "multi3", "multi4"],
key:"TestMulticat"
},
6161782:{
value="Traps (Bamboo / Box)",
key="Observation gear"
}
}
对于此类输入,您可以使用jackson:
objectMapper.configure(JsonParser.Feature.ALLOW_UNQUOTED_FIELD_NAMES, true);
Map<String, Map<String, Object>> result = objectMapper
.readValue(test, new TypeReference<Map<String, Map<String, Object>>>() {});
ALLOW_UNQUOTED_FIELD_NAMES
将帮助您处理未加引号的字段名称,但是对于未标记的值没有这样的选项。
在你的情况下,因为它不是一个json,你可以修复你的序列化以生成有效的jackson,或者为jackson处理这个编写你自己的Deserializer
,因为目前它不可能用不带引号的字符串值读取json。 / p>