Java-将complexe List#to字符串转换为列表
我使用以下列表:Java-将complexe List#to字符串转换为列表,java,Java,我使用以下列表: List<HashMap<Map<String, Object>, Map<String, Object>>> 如何将其转换回列表 谢谢 最好使用JSON或YAML等格式。Usng toString()意味着在键或值中出现了太多类似于={}或,的角落情况。toString()方法生成的格式用于日志记录和调试,而不是用于序列化和反序列化 我建议将对象转换为json格式(其他格式如xml也可以),并使用json库(如“Gson”)进
List<HashMap<Map<String, Object>, Map<String, Object>>>
如何将其转换回列表
谢谢 最好使用JSON或YAML等格式。Usng toString()意味着在键或值中出现了太多类似于
=
{}或,
的角落情况。toString()方法生成的格式用于日志记录和调试,而不是用于序列化和反序列化
我建议将对象转换为json格式(其他格式如xml也可以),并使用json库(如“Gson”)进行转换
示例如何将对象转换为json字符串:
Gson gson = new Gson();
String json = gson.toJson(myObject);
示例如何将json字符串转换回对象,请参见:
更新:以下是第一部分的完整示例:
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);
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);
ObjectMapper mapper=new ObjectMapper();
Map map1=新的HashMap();
map1.put(“键”、“值”);
map1.put(“键1”、“值”);
map1.put(“键2”、“值”);
map1.put(“键3”、“值”);
HashMap hash=新的HashMap();
List lists=新建ArrayList();
hash.put(map1,map1);
列表。添加(哈希);
System.out.println(mapper.writeValueAsString(列表));
似乎您需要为该作业编写一个util方法。请澄清,在保存到文件或从文件读取字符串并创建列表期间,您是否有问题?在将字符串转换回列表期间,谢谢!好主意,我将使用Json,但我是否需要将每个映射转换,或者我可以只使用Gson#toJson-on-to-List:List您可以将整个列表/映射结构传递到Gson.toJson()-这是最简单的部分。转换回json稍微有点困难,您可以使用fromJson()方法,也可以编写自己的一系列嵌套循环,从json dom构建对象。我尝试使用Gson#toJson,但在json中,列表中的所有元素都是空的。我在上面添加了一个工作示例。在这样做的时候,我意识到在另一个hashmap中使用一个map作为键确实是一件非常奇怪的事情。Gson将密钥映射转换为字符串,因为没有更好的方法以json格式对其进行建模。我强烈建议创建一个自定义java类来为数据结构建模,而不是使用嵌套映射。
[{"{key1=keyValue1}":{"value1":"valueValue1"}}]
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"}}]
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));