从牛津词典可以看出,规避意味着“找到绕过(障碍)的方法”,这里有一个简单的解决方法。
首先,我创建了一个生成与上面相同的 MultiValueMap 的方法。我使用相同的方法将其解析为 json 字符串。
然后我创建了以下反序列化方法
public static MultiMap<String,String> doDeserialization(String serializedString) throws JsonParseException, JsonMappingException, IOException {
ObjectMapper mapper = new ObjectMapper();
Class<MultiValueMap> classz = MultiValueMap.class;
MultiMap map = mapper.readValue(serializedString, classz);
return (MultiMap<String, String>) map;
}
当然,这本身就属于您上面提到的确切问题,因此我创建了doDeserializationAndFormat
方法:它将迭代给定键对应的每个“列表中的列表”,并将值一一关联到该键
public static MultiMap<String, String> doDeserializationAndFormat(String serializedString) throws JsonParseException, JsonMappingException, IOException {
MultiMap<String, String> source = doDeserialization(serializedString);
MultiMap<String, String> result = new MultiValueMap<String,String>();
for (String key: source.keySet()) {
List allValues = (List)source.get(key);
Iterator iter = allValues.iterator();
while (iter.hasNext()) {
List<String> datas = (List<String>)iter.next();
for (String s: datas) {
result.put(key, s);
}
}
}
return result;
}
这是 main 方法中的一个简单调用:
MultiValueMap<String,String> userParsedMap = (MultiValueMap)doDeserializationAndFormat(stackMapSerialized);
System.out.println("Key 1 = " + userParsedMap.get("Key 1") );
System.out.println("Key 2 = " + userParsedMap.get("Key 2") );
![json to multivaluemap](https://i.stack.imgur.com/6pOVw.png)
希望这可以帮助。