Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/341.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java-将complexe List#to字符串转换为列表_Java - Fatal编程技术网

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));