public static Task FromJson(Json.JsonObject json) { var uuid = Guid.Parse(json.GetNamedString("uuid")); var status = statusLUT[json.GetNamedString("status")]; var description = json.GetNamedString("description"); var entered = new Timestamp(json.GetNamedString("entry")); var lastModified = new Timestamp(json.GetNamedString("modified")); var tags = noTags; if (json.ContainsKey("tags")) { tags = ImmutableList.CreateRange(json.GetNamedArray("tags").Select(value => value.GetString())); } var additionalAttributes = ImmutableDictionary.CreateRange(json.Where(entry => !handledAttributes.Contains(entry.Key))); return(new Task(uuid, status, description, entered, lastModified, tags, additionalAttributes)); }