public string convertToFinalStruct(Dictionary <List <int>, List <int> > tuple, List <double> playerStat, int genFolderCount, int iterable) { Console.WriteLine("*************** Combine the friend deck with their respective enemy deck and win and Lose stat ******************\n\n"); string jsonStruct = ""; List <dupStructure> cStruct = new List <dupStructure>(); double[] pStat = playerStat.ToArray(); int count = 0; foreach (var tunpleKey in tuple.Keys) { dupStructure cStructTemp = new dupStructure(); if (count < (genFolderCount * iterable)) { cStructTemp.FriendDeck = tunpleKey; cStructTemp.EnemyDeck = tuple.GetValueOrDefault(tunpleKey); cStructTemp.WinRate = pStat[count]; } cStruct.Add(cStructTemp); count++; } jsonStruct = JsonConvert.SerializeObject(cStruct); /* Save the JSON string in a FinalDataJSON.json */ string fileName = "C:/Development/HeartstoneDataCapture/HeartstoneDataCapture/Data/FinalData/FinalDataWinRateJSON.json"; System.IO.File.WriteAllText(fileName, jsonStruct); return(jsonStruct); }
/// <summary> /// This method will conver the JSON data to one hot representation /// </summary> /// <param name="json"></param> /// <returns></returns> public string convertJSONToOneHotWinRate(String json, Dictionary <string, string> CardPool) { Dictionary <int, cardDefs> cardsInfo = cPro.getAllCardsWithId(); Dictionary <string, cardDefs> cardsInfoStr = cPro.getAllCards(); List <dupStructure> data = JsonConvert.DeserializeObject <List <dupStructure> >(json); /***/ List <int> CardPoolIdMain = new List <int>(); foreach (string keys in CardPool.Keys) { CardPoolIdMain.Add(cardsInfoStr.GetValueOrDefault(keys.Split('\r')[0]).dbfId); } /***/ List <dupStructure> finalOneHotStr = new List <dupStructure>(); foreach (dupStructure struc in data) { List <int> FriendDeck = new List <int>(); List <int> EnemyDeck = new List <int>(); Dictionary <int, int> cardCountFriend = new Dictionary <int, int>(); Dictionary <int, int> cardCountEnemy = new Dictionary <int, int>(); List <int> CardPoolId = new List <int>(); dupStructure cStructTemp = new dupStructure(); foreach (string keys in CardPool.Keys) { CardPoolId.Add(cardsInfoStr.GetValueOrDefault(keys.Split('\r')[0]).dbfId); } foreach (int id in struc.FriendDeck) { string cardName = cardsInfo.GetValueOrDefault(id).name; if (CardPool.ContainsKey(cardName)) { if (cardCountFriend.ContainsKey(id)) { cardCountFriend[id] = cardCountFriend[id] + 1; } else { cardCountFriend.Add(id, 1); } } } foreach (int id in struc.EnemyDeck) { string cardName = cardsInfo.GetValueOrDefault(id).name; if (CardPool.ContainsKey(cardName)) { if (cardCountEnemy.ContainsKey(id)) { cardCountEnemy[id] = cardCountEnemy[id] + 1; } else { cardCountEnemy.Add(id, 1); } } } foreach (int id in CardPoolId) { if (cardCountFriend.ContainsKey(id)) { FriendDeck.Add(cardCountFriend[id]); } else { FriendDeck.Add(0); } if (cardCountEnemy.ContainsKey(id)) { EnemyDeck.Add(cardCountEnemy[id]); } else { EnemyDeck.Add(0); } } cStructTemp.FriendDeck = FriendDeck; cStructTemp.EnemyDeck = EnemyDeck; cStructTemp.WinRate = struc.WinRate; finalOneHotStr.Add(cStructTemp); } string result = JsonConvert.SerializeObject(finalOneHotStr); return(result); }