CSharp · Console
using System;
using System.Linq;
using System.Collections.Generic;
using Newtonsoft.Json;
using Newtonsoft.Json.Linq;
public class Program
{
public static void Main()
{
string json = @"
{
""accessType"":""Grant"",
""spaces"":[
{""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)
.Children<JObject>()
.Select(jo => Guid.Parse((string)jo["spaceId"]))
.ToList();
}
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 }