gpt4 book ai didi

java - 从 Gson 获取哈希表

转载 作者:行者123 更新时间:2023-11-30 06:50:14 26 4
gpt4 key购买 nike

我有一个 .json 文件存储哈希表的值

{鱼:{class:java.lang.Integer,值:7},鸡蛋:{class:java.lang.Integer,值:6},鸡:{class:java.lang.Integer,值:7 }}

我保存表格没问题:

private void saveInventory()
{
Json json = new Json();
file.writeString(json.prettyPrint(inventory.inv), false);
}

我正在尝试使用 Gson 加载该表。

根据这里的其他几个问题,我尝试了几种不同的方法。每个都给出了不同的错误, malformedJsonException ,当前有以下错误,它给了我错误: java.lang.IllegalStateException: Expected STRING but was BEGIN_OBJECT

private void loadInventory() {
Json json = new Json();
Gson gson = new Gson();

try {
BufferedReader br = new BufferedReader(new FileReader("bin/data.json"));
JsonObject object = (JsonObject) new com.google.gson.JsonParser().parse(br);
Set<Map.Entry<String, JsonElement>> set = object.entrySet();
Iterator<Map.Entry<String, JsonElement>> iterator = set.iterator();

Hashtable<Constants.FoodTypes, Integer> map = new Hashtable<Constants.FoodTypes, Integer>();

while (iterator.hasNext()) {
Map.Entry<String, JsonElement> entry = iterator.next();

Constants.FoodTypes value = gson.fromJson(entry.getValue(), Constants.FoodTypes.class);
Integer key = Integer.parseInt(entry.getKey());

if (value != null) {
map.put(value, key);
}

}

}
catch (FileNotFoundException e)
{
e.printStackTrace();
} catch (JsonSyntaxException e) {
e.printStackTrace();
}
}

将其作为哈希表加载回来的更好方法是什么?

最佳答案

“{鱼:{class:java.lang.Integer,值:7},鸡蛋:{class:java.lang.Integer,值:6},鸡:{class:java.lang.Integer,值: 7}}"不是一个正确的 JSON 对象。您可以使用 Gson 从哈希表生成文件(或字符串)来创建文件(或字符串)。

在这种情况下,您的 json 字符串应该是

{
"FISH": {
"class": "java.lang.Integer",
"value": 7
},
"EGGS": {
"class": "java.lang.Integer",
"value": 6
},
"CHICKEN": {
"class": "java.lang.Integer",
"value": 7
}
}

关于java - 从 Gson 获取哈希表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42964876/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com