使用XStream将JSON转换为HashMap

时间:2014-04-15 21:55:29

标签: java json hashmap converter xstream

我有一张地图形式的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。

2 个答案:

答案 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静态工厂方法,而不是将其作为构造函数。