예제 #1
0
        public override object ReadJson(JsonReader reader, Type objectType, object existingValue, JsonSerializer serializer)
        {
            var jo = serializer.Deserialize <JObject>(reader);

            var fwMarker = new FwMarker();

            foreach (var e in jo.Properties())
            {
                fwMarker.Name   = e.Name;
                fwMarker.Marker = new MarkerData();
                var obj = e.Value as JObject;

                foreach (var v in obj.Properties())
                {
                    var prop = typeof(MarkerData).GetProperties().Where(x => x.GetCustomAttributes(typeof(JsonPropertyAttribute), false).FirstOrDefault() != null)
                               .Select(x =>
                    {
                        var jsonAttribute = (JsonPropertyAttribute)x.GetCustomAttributes(typeof(JsonPropertyAttribute), false).FirstOrDefault();
                        return(new { Property = x, JsonName = jsonAttribute.PropertyName });
                    }).FirstOrDefault(x => x.JsonName == v.Name);

                    prop.Property.SetValue(fwMarker.Marker, v.Value.ToString());
                }
            }

            return(fwMarker);
        }
예제 #2
0
        public override object ReadJson(JsonReader reader, Type objectType, object existingValue, JsonSerializer serializer)
        {
            var jo = serializer.Deserialize<JObject>(reader);

            var fwMarker = new FwMarker();

            foreach (var e in jo.Properties())
            {
                fwMarker.Name = e.Name;
                fwMarker.Marker = new MarkerData();
                var obj = e.Value as JObject;

                foreach (var v in obj.Properties())
                {
                    var prop = typeof(MarkerData).GetProperties().Where(x => x.GetCustomAttributes(typeof(JsonPropertyAttribute), false).FirstOrDefault() != null)
                                                    .Select(x =>
                                                    {
                                                        var jsonAttribute = (JsonPropertyAttribute)x.GetCustomAttributes(typeof(JsonPropertyAttribute), false).FirstOrDefault();
                                                        return new { Property = x, JsonName = jsonAttribute.PropertyName };
                                                    }).FirstOrDefault(x => x.JsonName == v.Name);

                    prop.Property.SetValue(fwMarker.Marker, v.Value.ToString());
                }
            }

            return fwMarker;
        }