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;
}