我有一张地图形式的JSON字符串:
{ "露":{ " id":456, " full_name":" GOOBER,ANGELA", " user_id":" 2733245678", " stin":" 2733212346" }, "迈拉":{ " id":123, " full_name":" BOB,STEVE", " user_id":" abc213", " stin":" 9040923411" } }
我希望将它转换为HashMap,键为" Lucy"," Myra"等和值为JavaObject
Class Person
{
String id;
String fullName;
String userId;
Strring stin;
}
我该怎么办?我有一个提示,我需要使用MapConverter,但几乎没有关于如何使用的文档。我使用XStream创建了Lists(使用addImplicitCollection)但却不知道Map。
答案 0 :(得分:0)
你可以用" jackson"太
ObjectMapper objMapper = new ObjectMapper();
Map<String, Person> mpCards = objMapper.readValue(strJSONString, new TypeReference<Map<String, Person>>(){});
答案 1 :(得分:0)
将JSON转换为地图地图。遍历外部地图,获取地图条目的值(内部地图),并将其传递给接受地图并构造相应对象的对象的构造函数。使用指向构造对象的指针替换指向内部映射的指针。 (为了使Java泛型变得快乐,您可能需要创建一个新映射与更新旧映射中的值。)
伪代码(几乎可以在任何地方):
Map<String, Map> theWholeThing = myJSONParser.parseJSONIntoObject(theWholeJSONString);
Map<String, Person> theNewThing = new HashMap<String, Person>();
// Use your favorite Map iterating style -- I picked this at random
for (Map.Entry<String, String> entry : theWholeThing.entrySet()) {
String key = entry.getKey();
Map<String, String> value = entry.getValue();
Person person = new Person(value);
theNewThing.put(key, person);
}
return theNewThing;
在课堂上的人:
Person(Map<String, String) map) {
this.id = map.get("id");
this.fullName = map.get("full_name");
this.userId = map.get("user_id");
this.stin = map.get("stin");
}
如果您愿意,可以在FromJsonMap
上创建Person
静态工厂方法,而不是将其作为构造函数。