Я пытаюсь десериализовать информацию о карте из JSON для использования в игре Unity, но она работает не совсем правильно. Я протестировал классы, к которым пытаюсь десериализоваться, и могу вручную создавать объекты для них, но десериализатор не создает их правильно.
Когда я запускаю логику десериализации, результирующий массив имеет правильный размер, но ни одно из полей Cost
или Name
карточек не заполняется, и у меня остается массив неинициализированных Card
объектов.
Соответствующий код у меня следующий:
Файл, в котором мы десериализованы, Game.cs:
using System.IO;
using UnityEngine;
public class Game {
private CardsCollection allCards;
private void LoadJson()
{
...
// Find the path to our JSON file
// Save the path as "path"
// I have verified this line gets the correct json data as a string
string json = File.ReadAllText(path);
// Convert the json string into a deserialized array of objects
// using the CardsCollection wrapper
allCards = JsonUtility.FromJson<CardsCollection>(json);
}
}
Файл объекта Card, Card.cs:
using System;
[Serializable]
public class Card
{
public string Name { get; set; }
public int Cost { get; set; }
public Card(string Name, int Cost)
{
this.Name = Name;
this.Cost = Cost;
}
}
[Serializable]
public class CardsCollection
{
public Card[] cards;
}
И, наконец, сам JSON:
{
"cards": [
{
"Name": "copper",
"Cost": 0
},
{
"Name": "silver",
"Cost": 3
},
{
"Name": "gold",
"Cost": 6
},
{
"Name": "curse",
"Cost": 0
},
{
"Name": "estate",
"Cost": 2
},
{
"Name": "duchy",
"Cost": 5
},
{
"Name": "province",
"Cost": 8
}
]
}