public override object ReadJson()

in FigmaSharp/FigmaSharp/WebApi/FigmaJsonConverter.cs [43:145]


        public override object ReadJson(JsonReader reader,
            Type objectType, object existingValue, JsonSerializer serializer)
        {
            JObject jsonObject = JObject.Load(reader);

            object figmaObject = null;

            if (!jsonObject.ContainsKey ("type") || string.IsNullOrEmpty (jsonObject["type"].Value<string> ()))
            {
                if (objectType == typeof (FigmaPoint))
                {
                    return jsonObject.ToObject<FigmaPoint>();
                }
                if (objectType == typeof(FigmaComponent))
                {
                    //var obj = jsonObject.ToObject<FigmaComponent>();
                    serializer.MissingMemberHandling = MissingMemberHandling.Ignore;
                    serializer.NullValueHandling = NullValueHandling.Ignore;
                    figmaObject = jsonObject.ToObject<FigmaComponent> ();
                    serializer.Populate (jsonObject.CreateReader (), figmaObject);
                    return figmaObject;
                }

                throw new NotImplementedException(objectType.ToString ());
            }

            if (jsonObject["type"].Value<string>() == "DOCUMENT")
            {
                figmaObject = jsonObject.ToObject<FigmaDocument>();
            }
            else if (jsonObject["type"].Value<string>() == "CANVAS")
            {
                figmaObject = jsonObject.ToObject<FigmaCanvas>();
            }
            else if (jsonObject["type"].Value<string>() == "SLICE")
            {
                figmaObject = jsonObject.ToObject<FigmaSlice>();
            }
            else if (jsonObject["type"].Value<string>() == "FRAME")
            {
                figmaObject = jsonObject.ToObject<FigmaFrame>();
            }
            else if (jsonObject["type"].Value<string>() == "VECTOR")
            {
                figmaObject = jsonObject.ToObject<FigmaVector>();
            }
            else if (jsonObject["type"].Value<string>() == "TEXT")
            {
                figmaObject = jsonObject.ToObject<FigmaText>();
                return figmaObject;
            }
            else if (jsonObject["type"].Value<string>() == "GROUP")
            {
                figmaObject = jsonObject.ToObject<FigmaGroup>();
            }
            else if (jsonObject["type"].Value<string>() == "RECTANGLE")
            {
                figmaObject = jsonObject.ToObject<RectangleVector>();
                return figmaObject;
            }
            else if (jsonObject["type"].Value<string>() == "LINE")
            {
                figmaObject = jsonObject.ToObject<FigmaLine>();
                return figmaObject;
            }
            else if (jsonObject["type"].Value<string>() == "ELLIPSE")
            {
                figmaObject = jsonObject.ToObject<FigmaElipse>();
                return figmaObject;
            }
            else if (jsonObject["type"].Value<string>() == "STAR")
            {
                figmaObject = jsonObject.ToObject<FigmaStar>();
                return figmaObject;
            }
            else if (jsonObject["type"].Value<string>() == "REGULAR_POLYGON")
            {
                figmaObject = jsonObject.ToObject<FigmaRegularPolygon>();
                return figmaObject;
            }
            else if (jsonObject["type"].Value<string>() == "INSTANCE")
            {
                figmaObject = jsonObject.ToObject<FigmaInstance>();
            }
            else if (jsonObject["type"].Value<string>() == "COMPONENT")
            {
                figmaObject = jsonObject.ToObject<FigmaComponentEntity>();
            }
            else if (jsonObject["type"].Value<string>() == "BOOLEAN_OPERATION")
            {
                figmaObject = jsonObject.ToObject<FigmaBoolean>();
            }
			else if (jsonObject["type"].Value<string> () == "BOOLEAN_OPERATION") {
                figmaObject = jsonObject.ToObject<FigmaBoolean> ();
            } else
            {
                return jsonObject.ToObject<object>();
            }
            serializer.MissingMemberHandling = MissingMemberHandling.Ignore;
            serializer.NullValueHandling = NullValueHandling.Ignore;
            serializer.Populate(jsonObject.CreateReader(), figmaObject);
            return figmaObject;
        }