Java 变换映射<;列表<;Long>;,列表<;长期>&燃气轮机;串连
我曾尝试使用Gson执行此操作,但您无需运行代码即可看到它没有多大意义:Java 变换映射<;列表<;Long>;,列表<;长期>&燃气轮机;串连,java,json,dictionary,serialization,Java,Json,Dictionary,Serialization,我曾尝试使用Gson执行此操作,但您无需运行代码即可看到它没有多大意义: final Map<List<Double>, List<Double>> map = new Gson().fromJson("{[111,222]=[333,444], [555,666]=[777,000]}", Map.class); final Map=new Gson().fromJson(“{[111222]=[333444],[555666]=[777000]}”,Ma
final Map<List<Double>, List<Double>> map = new Gson().fromJson("{[111,222]=[333,444], [555,666]=[777,000]}", Map.class);
final Map=new Gson().fromJson(“{[111222]=[333444],[555666]=[777000]}”,Map.class);
我得到一个格式错误的异常。有人知道如何在不创建自定义类的情况下做到这一点吗
它不能与Json相关,也欢迎使用其他方法。它不一定是一个映射,它可以是一个成对的列表,无论如何,我永远不会使用列表作为键进行搜索,我只会迭代它
我期待着阅读您的新想法:)您的JSON字符串错误有两个原因:
[555666]
作为键无效:
,而不是=
这有点老套,但可以用作反序列化字符串的方法。 序列化将使用Gson.toJson(map)完成
final Map Map=new Gson().fromJson(“{\”[1,2,3,5]\”=[4,5,6]}”,Map.class);
最终映射结果=Maps.newHashMap();
对于(最终Map.Entry:Map.entrySet()){
最终列表值=Lists.newArrayList();
for(最后一个双倍数字:entry.getValue()){
value.add(number.longValue());
}
final List rawKey=new Gson().fromJson(entry.getKey(),List.class);
final List key=Lists.newArrayList();
for(最终双精度编号:rawKey){
key.add(number.longValue());
}
结果。输入(键、值);
}
系统输出打印项次(结果);
它不是有效的JSON?测试它主要的一点不是使用Json,主要的一点是(反)序列化一个映射(从)到一个字符串。你的字符串格式是固定的吗?不,我只想在最后的对象,字符串也可以看作为一个sha1散列。1。我知道,这就是为什么我建议使用Json的替代方案,并写下“没有多大意义”;2.错了,使用Gson还可以使用=(至少对于映射是这样)。但是如果它不是JSON,它只是一种不存在的格式,因此您必须实现自定义解析,可能是语法或regexp。
final Map<String, List<Double>> map = new Gson().fromJson("{\"[1,2,3,5]\"=[4,5,6]}", Map.class);
final Map<List<Long>, List<Long>> result = Maps.newHashMap();
for (final Map.Entry<String, List<Double>> entry : map.entrySet()) {
final List<Long> value = Lists.newArrayList();
for (final Double number : entry.getValue()) {
value.add(number.longValue());
}
final List<Double> rawKey = new Gson().fromJson(entry.getKey(), List.class);
final List<Long> key = Lists.newArrayList();
for (final Double number : rawKey) {
key.add(number.longValue());
}
result.put(key, value);
}
System.out.println(result);