using System.Collections.Generic;
using Newtonsoft.Json.Linq;
public static void Main()
""accessType"":""Grant"",
{""spaceId"":""5c209ba0-e24d-450d-8f23-44a99e6ae415""},
{""spaceId"":""e24d5ce1-209b-462c-8566-6ae41544a99e""}
""privilegeId"":""db7cd037-6503-4dbf-8566-2cca4787119d"",
""privilegeName"":""PERM_RVMC_DEV"",
""privilegeDescription"":""RVMC Dev"",
""privilegeType"":""Permission""
ProfilePrivilege pp = JsonConvert.DeserializeObject<ProfilePrivilege>(json);
Console.WriteLine("AccessType: " + pp.AccessType);
Console.WriteLine("PrivilegeId: " + pp.PrivilegeId);
Console.WriteLine("PrivilegeName: " + pp.PrivilegeName);
Console.WriteLine("PrivilegeDescription: " + pp.PrivilegeDescription);
Console.WriteLine("PrivilegeType: " + pp.PrivilegeType);
Console.WriteLine("Spaces: " + string.Join(", ", pp.Spaces.Select(g => g.ToString())));
class SpaceListConverter : JsonConverter
public override bool CanConvert(Type objectType)
return (objectType == typeof(List<Guid>));
public override object ReadJson(JsonReader reader, Type objectType, object existingValue, JsonSerializer serializer)
return JArray.Load(reader)
.Select(jo => Guid.Parse((string)jo["spaceId"]))
public override void WriteJson(JsonWriter writer, object value, JsonSerializer serializer)
throw new NotImplementedException();
public class ProfilePrivilege
public AccessType AccessType { get; set; }
public Guid PrivilegeId { get; set; }
public string PrivilegeName { get; set; }
public string PrivilegeDescription { get; set; }
public PrivilegeType PrivilegeType { get; set; }
[JsonConverter(typeof(SpaceListConverter))]
public List<Guid> Spaces;
public enum AccessType { Grant, Deny }
public enum PrivilegeType { Permission, Other }