public void ImportJson(IMap map, string jsonStr) { JObject root = (JObject)JsonConvert.DeserializeObject(jsonStr); List<string> entityNames = new List<string>(); foreach (JToken entToken in root["ExtractedEntities"]) { entityNames.Add((string)entToken); } map.RemoveEntitiesWithName(entityNames); ILayer defaultLayer = map.GetOrCreateLayer("New entities"); defaultLayer.Color = ColorRgba.Standard.Violet; foreach (JToken entToken in root["Entities"]) { EntityInstance instance = new EntityInstance(); instance.EntityName = (string)entToken["EntityName"]; instance.GroupId = (int)entToken["GroupId"]; for (int i = 0; i < instance.LayerMasks.Length; i++) { uint mask = (uint)entToken["LayerMasks"][i]; instance.LayerMasks[i] = mask; } foreach (var fieldKeyValuePair in entToken["Fields"]) { JProperty property = (JProperty)fieldKeyValuePair; string name = property.Name; int typeId = (int)property.Value["TypeId"]; int numFields = (int)property.Value["NumFields"]; IType type = TypeFactory.Create(typeId, numFields); JsonConvert.PopulateObject(property.Value.ToString(), type); instance.Fields[name] = type; } bool isNew = ((bool?)entToken["IsNew"]) == true; if (isNew) { instance.AddToLayer(defaultLayer); } map.Entities.Add(instance); } }