2016-07-05 4 views
1

現在、私はLibGDXのJSON出力ファイル書き込みクラスを使用して、ゲームのデータ保存(および読み込み)の一部を行っています。私はGoogleの全面的な解決策を見つけようとしてきましたが、近づいてきましたが、シガーはありませんでした。これまでのところ私は、ファイルにArray<Object>を保存しようとすることに成功しましたが、私はロード/ファイルからデータを読み取るしようとすると、私は次の例外を取得:フィールドでLibGDX SerializationExceptionが見つかりません

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;(typiを持っていますその変数は、各カードのインスタンスに対して設定した列挙型です)とprivate CardTemper temper;(もう一方の列挙型と同じになる列挙型)です。他の機能をさらに実装すると、それらのカードがすべて同じではないため、カードのインスタンスが存在する必要があります。

私はどこが間違っているのか正確にはわかりませんが、主にゲーム情報の保存と読み込みに関する経験が不足していると思います。

誰かが私を助けてくれたら、大変感謝しています。

答えて

1

一つの可能​​な解決策はそうのような新しいクラスCardsを作成することです

おかげで、 クリフォード:

public class Cards { 
    private Array<CardData> cards; 

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

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

、その後のような値取得:もう一つは、JSONを変更することである

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

をファイルへ:

[ 
    { 
     "card": "ID_3", 
     "temper": "LAZY" 
    }, 
    { 
     "card": "ID_2", 
     "temper": "LAZY" 
    }, 
    { 
     "card": "ID_1", 
     "temper": "LAZY" 
    }, 
    { 
     "card": "ID_1", 
     "temper": "LAZY" 
    } 
] 
0123その後、

などの値を取得:

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

私が第一の変形を好むだろうが、選択はあなた次第です。

関連する問題