【发布时间】:2019-08-20 12:40:27
【问题描述】:
我有以下 json 字符串:
[["aaa",-1],["awf",1],["gdr",-1]]
我想将该列表解析为键值哈希映射,以便它具有如下条目:
key: aaa, value: -1
key: awf, value: 1
key: gdr, value: -1
我用 gson 尝试了不同的逻辑,但没有成功。谁能指出我正确的方向?
编辑:试过这个:
JsonObject jsonObject = new Gson().fromJson(b, JsonObject.class)
我收到以下错误:
com.google.gson.JsonSyntaxException: Expected a com.google.gson.JsonObject but was com.google.gson.JsonArray
【问题讨论】:
-
GSON 在将 JSON 映射到等效对象模型时会派上用场,但是您的模型需要在 JSON 和 Java 之间进行转换,因此我宁愿使用普通的 JSON 解析器将您的数组数组解析为 Map。
-
您是否考虑过将 JSON 解析为其实际表示的内容(一个 2 元素数组的数组),然后将该数据映射到您的 hashmap(使用 Stream 或普通的 for 循环)?在我看来,它更容易实现和维护。
-
您应该添加一个最小的可重现示例。也就是说,你尝试的代码,错误是什么。否则,您的问题很快就会结束。
-
您的 JSON 是一个数组数组。您可以将其更改为对象数组吗?
[{"aaa": -1}, {"afw": 1}, {"gdr": -1}]?这样一来,JSON 库可能会轻松创建映射,但在数组中它不知道键和值应该是什么。