**UPDATE: This answer has been solved and this post updated to **
I am creating an inventory system and decided to keep a master list of all the items. The goal is to use Newtonsoft's JSON.net to parse the item list and populate the database of items. The JSON item list looks like:
JSON
{
"Ingredients":
[
],
"Consumables":
[
{
"ID" : "TP_Small",
"Icon" : "Sprites/porridge.png",
"Name" : "Small Tan Pill's Porridge",
"Consumable" : true,
"Cooldown": 0,
"Duration": 3,
"Effect Description" : "Restores 100 health.",
"Description" : "A hearty drinkable meal from everyone's favorite hypercellulose gelatin timelord!!!",
"SFX": "{eb4e9ad8-c6ac-414f-8d5e-c3d012ca6ae6}",
"Bonuses" : {
"HP": 100,
"Stamina": 100,
"Tolerance": 20,
"Attack": 4
}
}
],
"Concoctions":
[
],
"Equipment":
[
],
"Abilities" :
[
]
}
And this is the structure of the classes we are using to match the JSON:
Classes
[System.Serializable]
public class Items
{
public List<ItemBase> Ingredients;
public List<ItemBase>Consumables;
public List<ItemBase>Concoctions;
public List<ItemBase>Equipment;
public List<ItemBase>Abilities;
}
[System.Serializable]
public class ItemBase
{
public string ID;
public string Icon;
public string Name;
public bool Consumable;
public int Cooldown;
public int Duration;
public string EffectDescription;
public string Description;
public string SFX;
public StatBonus Bonuses;
}
[System.Serializable]
public class StatBonus
{
public int HP;
public int Stamina;
public int Tolerance;
public int Attack;
}
The deserialization code:
TextAsset json = Resources.Load<TextAsset>(path);
itemList = new Items();
itemList.Abilities = new List<ItemBase>();
itemList.Concoctions = new List<ItemBase>();
itemList.Consumables = new List<ItemBase>();
itemList.Equipment = new List<ItemBase>();
itemList.Ingredients = new List<ItemBase>();
itemList = JsonConvert.DeserializeObject<Items>(json.text);
This code now works as intended!
Items.Abilities = new List<ItemBase>();directly. \$\endgroup\$