Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- using System;
- using System.Collections.Generic;
- using System.Linq;
- using MyNamespace.Domain;
- using Newtonsoft.Json;
- using Newtonsoft.Json.Linq;
- namespace MyNamespace.Converters
- {
- public class MatchDetailPlayerConverter : JsonConverter
- {
- private readonly string[] _itemKeys = {"item_0", "item_1", "item_2", "item_3", "item_4", "item_5"};
- public override void WriteJson(JsonWriter writer, object value, JsonSerializer serializer)
- {
- var hasItems = (MatchDetailPlayer) value;
- var obj = JObject.FromObject(value);
- AddItems(obj, hasItems.Items);
- obj.WriteTo(writer);
- }
- private void AddItems(JObject obj, IReadOnlyList<Item> items)
- {
- for (var i = 0; i < _itemKeys.Length; i++)
- {
- obj.Add(_itemKeys[i], ((int)items[i]).ToString());
- }
- }
- public override object ReadJson(JsonReader reader, Type objectType, object existingValue, JsonSerializer serializer)
- {
- var jo = JObject.Load(reader);
- var hasItems = jo.ToObject<MatchDetailPlayer>();
- hasItems.Items = GetItems(jo);
- return hasItems;
- }
- private List<Item> GetItems(JObject jo)
- {
- return _itemKeys.Select(itemKey => jo[itemKey]).Select(itemVal => itemVal.Value<Item>()).ToList();
- }
- public override bool CanConvert(Type objectType)
- {
- return (objectType == typeof (MatchDetailPlayer));
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement