CSharp · Console
using System;
using System.Collections.Generic;
using System.Linq;
using Newtonsoft.Json;
public class Application
{
[JsonProperty("roles")]
public IEnumerable<string> Roles { get; set; }
}
public class User
{
[JsonProperty("user_info")]
public IDictionary<string, Application> UserInfo { get; set; }
}
public class Program
{
public static void Main()
{
var json = @"{
""user_info"": {
""myapp1"": {
""roles"": [
""requestor""
]
},
""myapp2"": {
""roles"": [
""requests-edit"",
""requests-view""
]
},
""account"": {
""roles"": [
""manage-account"",
""manage-account-links"",
""view-profile""
]
}
}
}";
var deserializedJson = JsonConvert.DeserializeObject<User>(json);
Console.WriteLine("[ " + string.Join(", ", GetUserApplicationRoles("myapp1", deserializedJson)) + " ]");
Console.WriteLine("[ " + string.Join(", ", GetUserApplicationRoles("myapp2", deserializedJson)) + " ]");
Console.WriteLine("[ " + string.Join(", ", GetUserApplicationRoles("account", deserializedJson)) + " ]");
}
private static IEnumerable<string> GetUserApplicationRoles(string applicationName, User data) =>
data.UserInfo
.TryGetValue(applicationName, out var value) ?
value.Roles :
Enumerable.Empty<string>();
}