我使用此列表:
List<HashMap<Map<String, Object>, Map<String, Object>>>
我需要将其保存到文本文件中。
因此,使用List#toString方法,我获得了类似的文本:
[{{key=value, key=value, key=value}={key=value, key=value}}, {{key=value, key=value, key=value}={key=value, key=value}}, {{key=value, key=value, key=value}={key=value, key=value}}]
如何将其转换回List?
谢谢!
答案 0 :(得分:2)
最好使用JSON或YAML等格式。 Usng toString()表示在键或值中出现了=
{
}
或,
这样的极端案例。
答案 1 :(得分:0)
toString()方法生成一种用于记录和调试的格式,而不是用于序列化和反序列化。
我建议将对象转换为json格式(xml等其他格式也可以正常工作)并使用json库(如“Gson”)进行转换。
示例如何将对象转换为json字符串:
Gson gson = new Gson();
String json = gson.toJson(myObject);
示例如何将json字符串转换回对象,请参阅: creating Hashmap from a JSON String
更新:以下是第一部分的完整示例:
List<HashMap<Map<String, Object>, Map<String, Object>>> myObject = new ArrayList<>();
HashMap<Map<String, Object>, Map<String, Object>> hashMap1 = new HashMap<>();
myObject.add(hashMap1);
Map<String, Object> key1 = new HashMap<>();
key1.put("key1", "keyValue1");
Map<String, Object> value1 = new HashMap<>();
value1.put("value1", "valueValue1");
hashMap1.put(key1, value1);
Gson gson = new GsonBuilder().disableHtmlEscaping().create();
String json = gson.toJson(myObject);
System.out.println(json);
此示例打印:
[{"{key1=keyValue1}":{"value1":"valueValue1"}}]
Update2 使用Pair(来自apache commons lang3)而不是HashMap。这更有意义。
List<Pair<Map<String, Object>, Map<String, Object>>> myObject = new ArrayList<>();
MutablePair<Map<String, Object>, Map<String, Object>> pair1 = new MutablePair<>();
myObject.add(pair1);
Map<String, Object> key1 = new HashMap<>();
key1.put("key1", "keyValue1");
Map<String, Object> value1 = new HashMap<>();
value1.put("value1", "valueValue1");
pair1.setLeft(key1);
pair1.setRight(value1);
Gson gson = new Gson();
String json = gson.toJson(myObject);
System.out.println(json);
打印:
[{"left":{"key1":"keyValue1"},"right":{"value1":"valueValue1"}}]
答案 2 :(得分:0)
ObjectMapper mapper = new ObjectMapper();
Map<String, Object> map1=new HashMap<>();
map1.put("key","value");
map1.put("key1","value");
map1.put("key2","value");
map1.put("key3","value");
HashMap<Map<String, Object>, Map<String, Object>> hash=new HashMap<>();
List<HashMap<Map<String, Object>, Map<String, Object>>> lists=new ArrayList<>();
hash.put(map1, map1);
lists.add(hash);
System.out.println(mapper.writeValueAsString(lists));