我试着用Gson做,但是你不必运行代码来看它没有多大意义:
final Map<List<Double>, List<Double>> map = new Gson().fromJson("{[111,222]=[333,444], [555,666]=[777,000]}", Map.class);
我收到了MalformedJsonException。有没有人知道如何在不创建自定义类的情况下执行此操作?
它绝不能与Json相关,也欢迎其他方法。并且它不是一个地图,它可以是一个对的列表,无论如何我永远不会使用列表作为关键字,我将迭代它。
我期待着阅读你的新鲜想法:)
答案 0 :(得分:1)
您的JSON字符串错误有两个原因:
[555,666]
无效的密钥:
而不是=
答案 1 :(得分:1)
这有点hacky但可以用作反序列化字符串的方法。 序列化将使用Gson.toJson(map)完成。
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);