asset is emty on enering play mode

Hi,
I have written a code where I parse xml file to List of items and create a serializable asset with that list. My problem is that when I enter a playmode my asset becomes empty.
Do you have any ideas in why is that happening?

Thank you in advance.

Code:

[Serializable]
public class Day
{
	public int Id { get; set; }
	public string Time { get; set; }
	public string Weather { get; set; }
	
	public List<GroupWave> GroupWaves { get; set; }
}

[Serializable]
public class GroupWave
{
	public List<Wave> Waves { get; set; }
}

[Serializable]
public class Wave
{
	public int At { get; set; }
	public int GenerateTime { get; set; }
	
	public List<Enemy> Enemies { get; set; }
}

[Serializable]
public class Enemy
{
	public string Id { get; set; }
	public string EnemyType { get; set; }
	public int Count { get; set; }
	public string Route { get; set; }
}

And creating asset:

public class ParseConfig : EditorWindow
{
	//private const string xmlPath = "Assets/StreamingAssets/game_config.xml";
	private const string assetPath = "Assets/Resources/game_config.asset";

	[MenuItem("Zombie Sniper/Parse config")]
	public static void ParseAndSerializeData()
	{
		var days = DaysEntitiesParser.Parse(Application.streamingAssetsPath + "/game_config.xml");
		ScriptableObjectData data = ScriptableObject.CreateInstance<ScriptableObjectData>();
		data.SetData(days.ToArray());

		EditorUtility.SetDirty(data);

		AssetDatabase.DeleteAsset(assetPath);
		AssetDatabase.CreateAsset(data, assetPath);
		AssetDatabase.SaveAssets();
		AssetDatabase.Refresh();
	}
}

Solution was to use [SerializeField] attribute:

[System.Serializable]
public class Day
{
	[SerializeField]
	private int id;
	[SerializeField]
	private string time;
	[SerializeField]
	private string weather;
	[SerializeField]
	private GroupWave[] groupWaves;

	public int Id 
	{ 
		get { return id; } 
		set { id = value; }
	}
	public string Time 
	{ 
		get { return time; }
		set { time = value; }
	}
	public string Weather 
	{ 
		get { return weather; }
		set { weather = value; }
	}
	public GroupWave[] GroupWaves 
	{ 
		get { return groupWaves; }
		set { groupWaves = value; }
	}
}

[System.Serializable]
public class GroupWave
{
	[SerializeField]
	private Wave[] waves;
	
	public Wave[] Waves 
	{ 
		get { return waves; }
		set { waves = value; }
	}
}

[System.Serializable]
public class Wave
{
	[SerializeField]
	private int at;
	[SerializeField]
	private int generateTime;
	[SerializeField]
	private Enemy[] enemies;

	public int At 
	{ 
		get { return at; }
		set { at = value; }
	}
	public int GenerateTime 
	{ 
		get { return generateTime; }
		set { generateTime = value; }
	}
	public Enemy[] Enemies 
	{ 
		get { return enemies; }
		set { enemies = value; }
	}
}

[System.Serializable]
public class Enemy
{
	[SerializeField]
	private string id;
	[SerializeField]
	private string enemyType;
	[SerializeField]
	private int count;
	[SerializeField]
	private string route;

	public string Id 
	{ 
		get { return id; }
		set { id = value; }
	}
	public string EnemyType 
	{ 
		get { return enemyType; }
		set { enemyType = value; }
	}
	public int Count 
	{ 
		get { return count; }
		set { count = value; } 
	}
	public string Route 
	{ 
		get { return route; }
		set { route = value; }
	}
}