gpt4 book ai didi

java - 未找到字段导致的 LibGDX SerializationException

转载 作者:行者123 更新时间:2023-11-30 07:16:54 28 4
gpt4 key购买 nike

目前我正在使用 LibGDX 的 JSON 输出文件编写类来处理游戏的数据保存(和加载)部分。我一直在谷歌上试图找到解决方案,并且已经接近,但没有雪茄。到目前为止,我已经成功地尝试保存 Array<Object>到文件,但是当我尝试从文件读取/加载数据时,出现以下异常:

com.badlogic.gdx.utils.SerializationException: Error reading file: cards.json
at com.badlogic.gdx.utils.Json.fromJson(Json.java:705)
at com.towersvault.unbalanced.util.save.SaveHandler.loadCards(SaveHandler.java:91)
at com.towersvault.unbalanced.util.save.SaveHandler.load(SaveHandler.java:51)
at com.towersvault.unbalanced.UnbalancedMain.create(UnbalancedMain.java:28)
at com.badlogic.gdx.backends.lwjgl.LwjglApplication.mainLoop(LwjglApplication.java:147)
at com.badlogic.gdx.backends.lwjgl.LwjglApplication$1.run(LwjglApplication.java:124)
Caused by: com.badlogic.gdx.utils.SerializationException: Field not found: cards (com.badlogic.gdx.utils.Array)
Serialization trace:
{}.cards
at com.badlogic.gdx.utils.Json.readFields(Json.java:790)
at com.badlogic.gdx.utils.Json.readValue(Json.java:919)
at com.badlogic.gdx.utils.Json.fromJson(Json.java:703)
... 5 more

我的 JSON 文件如下所示:

{
"cards": [
{
"card": "ID_3",
"temper": "LAZY"
},
{
"card": "ID_2",
"temper": "LAZY"
},
{
"card": "ID_1",
"temper": "LAZY"
},
{
"card": "ID_1",
"temper": "LAZY"
}
]
}

我的加载方法的源代码如下所示:

Array<CardData> loadedCards = json.fromJson(Array.class, CardData.class, Gdx.files.local("cards.json");

CardData类有两个变量,即private Card card; (输入它,变量是我为每张卡的实例设置的枚举),和 private CardTemper temper; (也是一个与另一个枚举具有相同功能的枚举)。必须有卡片的实例,因为当我进一步实现其余功能时,它们都不相同。

我不太确定我哪里出了问题,我认为这主要是由于我缺乏处理保存和加载游戏信息的经验。

如果有人可以帮助我,我将不胜感激。

谢谢,克利福德

最佳答案

一种可能的解决方案是创建新类Cards,如下所示:

public class Cards {
private Array<CardData> cards;

public Array<CardData> getCards() {
return cards;
}

public void setCards(Array<CardData> cards) {
this.cards = cards;
}
}

然后检索如下值:

Cards cardsJson = json.fromJson(Cards.class, Gdx.files.local("cards.json")); 
Array<CardData> loadedCards = cardsJson.getCards();

另一种是将 json 文件更改为:

[
{
"card": "ID_3",
"temper": "LAZY"
},
{
"card": "ID_2",
"temper": "LAZY"
},
{
"card": "ID_1",
"temper": "LAZY"
},
{
"card": "ID_1",
"temper": "LAZY"
}
]

然后检索值,例如:

Array<CardData> fromJson = json.fromJson(Array.class, CardData.class, Gdx.files.local("cards.json"));

我更喜欢第一个变体,但选择权在你。

关于java - 未找到字段导致的 LibGDX SerializationException,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38211863/

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