public IEnumerable <Card> ReadCards(string data) { if (string.IsNullOrEmpty(data)) { throw new ArgumentException("data"); } this.mLoggingService.Trace("JSON data = {0}", data); JObject cardObject = JObject.Parse(data); IList <JToken> results = cardObject["cards"].Children().ToList(); var settings = new JsonSerializerSettings(); settings.MissingMemberHandling = MissingMemberHandling.Ignore; // Read set info MtgJsonSet setData = JsonConvert.DeserializeObject <MtgJsonSet>(data, settings); foreach (JToken result in results) { this.mLoggingService.Debug("Deserializing MtgJsonCard..."); MtgJsonCard cardData = JsonConvert.DeserializeObject <MtgJsonCard>(result.ToString(), settings); this.mLoggingService.Debug("MtgJsonCard deserialized!"); if (this.mSkipTokens) { if (!string.IsNullOrEmpty(cardData.Layout) && cardData.Layout.ToLower() == "token") { this.mLoggingService.Debug("Card is a token, skipping..."); continue; } } this.mLoggingService.Debug("Mapping data..."); var card = this.mDataMapper.GetCard(cardData, setData.Name, setData.Code); this.mLoggingService.Debug("Data mapped for card '{0}'!", cardData.Name); yield return(card); } }
private List <MtgJsonCard> DeserializeJsonCards(string fileName) { string data = File.ReadAllText(fileName); JObject cardObject = JObject.Parse(data); IList <JToken> results = cardObject["cards"].Children().ToList(); var settings = new JsonSerializerSettings(); settings.MissingMemberHandling = MissingMemberHandling.Ignore; List <MtgJsonCard> cardData = new List <MtgJsonCard>(); foreach (JToken result in results) { MtgJsonCard card = JsonConvert.DeserializeObject <MtgJsonCard>(result.ToString(), settings); cardData.Add(card); } return(cardData); }
private MtgCardEntity Map(MtgJsonCard card) { return(new MtgCardEntity() { Artist = card.Artist, BorderId = _codesCache.GetEntityByCode <BorderEntity>(card.Border).Id, ConvertedManaCost = TryParseNullableDecimal(card.Cmc), Flavor = card.Flavor, IsReserved = card.Reserved ?? false, IsStarter = card.Starter ?? false, IsTimeShifted = card.TimeShifted ?? false, LayoutId = _codesCache.GetEntityByCode <LayoutEntity>(card.Layout).Id, Loyalty = TryParseNullableDecimal(card.Loyalty), ManaCost = card.ManaCost, MtgJsonId = card.Id, MultiverseId = card.MultiverseId, Name = card.Name, Number = card.Number, OriginalText = card.OriginalText, OriginalType = card.OriginalType, Power = card.Power, RarityId = _codesCache.GetEntityByCode <RarityEntity>(card.Rarity).Id, ReleaseDate = TryParseNullableDate(card.ReleaseDate), SetId = _codesCache.GetEntityByCode <SetEntity>(card.SetTypeCode).Id, Source = card.Source, Text = card.Text, Type = card.Type, Toughness = card.Toughness, PowerDecimal = TryParseNullableDecimal(card.Power), ToughnessDecimal = TryParseNullableDecimal(card.Toughness), Legalities = MapLegalities(card.Legalities), Colors = MapColors(card.Colors), Types = MapTypes(card.Types), Supertypes = MapSupertypes(card.SuperTypes), Subtypes = MapSubtypes(card.SubTypes) }); }