Search code examples
c#.netjson.netkey-value

How can I return key-value pairs from a function in C#?


I am implementing a C# function.
I need to get the values from the function to the form.

public void GetRoles(string strGetRoles)
{
    string keyObj;
    string valueObj;
    var parseTree = JsonConvert.DeserializeObject<JObject>(strGetRoles);

    foreach (var prop in parseTree.Properties())
    {
        dynamic propValue = prop.Value;
        if (prop.Name == "roles" && prop.Value.HasValues)
        {
            foreach (var proval in propValue)
            {
                keyObj = (string)proval.Name;
                valueObj = (string)proval.Value;                                               
            }
        }
        else if (prop.Name == "groups" && prop.Value.HasValues)
        {
            foreach (var proval in propValue)
            {
                keyObj = (string)proval.Name;
                valueObj = (string)proval.Value;
            }
        }
    }
}

strGetRoles is the response string I get after fetching JSON API.
The prop.Value I get is:
{"roles": {"3": "Reseller","2": "Admin end user"},"groups": []}

Now I want to call this function and get each value in an object or string array.

How do I return these key-value pairs?


Solution

  • You can return KeyValuePair like this:

    return new KeyValuePair<string,string>(key,value);
    

    or use Tuple:

    return Tuple.Create(key,value);
    

    if you have more than one KeyValuePair to return use Dictionary.
    Read more about when to use Tuple vs KeyValuePair.
    In short using Tuple is better idea because of it's better performance.