private void addAvailableProperty(JToken jt)
{
if (jt is JProperty)
{
var jp = jt as JProperty;
if (jp.Value.Type == JTokenType.Array)
return; //TODO: array not supported yet
if (jp.Value.Type == JTokenType.Object)
{
foreach (var childJt in jp.Children())
{
addAvailableProperty(childJt);
}
}
else
{
if (!this.AvailableProperties.Any(p => p.Path == jp.Path))
{
this.AvailableProperties.Add(new PropertyDefinitionModel
{
Name = jp.Name,
Path = jp.Path,
Type = jp.Value.Type.ToPropertyType()
});
}
}
}
else if(jt is JObject)
{
foreach(var childJr in jt.Children())
{
addAvailableProperty(childJr);
}
}
}
}