Here is my JSON file that my C# WinForm application will need to access. Based on your account name (Windows AD Login), you will have access to specific files from the application.
Based on the suggestions of other developers, I was encouraged to use Newtonsoft.Json
My question is how do I get the values for the key "file"
[
{
"accountName": "admin.lastname",
"files": [
{
"file": "department1.assistant.division.manager.js"
},
{
"file": "department1.division.manager.js"
},
{
"file": "department2.assistant.division.manager.1.js"
},
{
"file": "department2.assistant.division.manager.2.js"
},
{
"file": "department2.division.manager.js"
},
{
"file": "department3.js"
},
{
"file": "department4.assistant.division.manager.1.js"
},
{
"file": "department4.assistant.division.manager.2.js"
},
{
"file": "department4.division.manager.js"
},
{
"file": "department5.assistant.division.manager.1.js"
},
{
"file": "department5.division.manager.js"
},
{
"file": "department6.division.manager.js"
},
{
"file": "department7.division.manager.js"
},
{
"file": "department8.division.manager.js"
},
{
"file": "department9.division.manager.js"
},
{
"file": "department10.js"
},
{
"file": "department11.division.manager.js"
},
{
"file": "department12.assistant.division.manager.1.js"
},
{
"file": "department12.assistant.division.manager.2.js"
},
{
"file": "department12.assistant.division.manager.3.js"
},
{
"file": "department12.assistant.division.manager.4.js"
},
{
"file": "department12.division.manager.js"
},
{
"file": "department13.js"
}
]
},
{
"accountName": "firstname.lastname",
"files": [
{
"file": "department1.assistant.division.manager.js"
},
{
"file": "department1.division.manager.js"
},
{
"file": "department2.assistant.division.manager.1.js"
},
{
"file": "department2.assistant.division.manager.2.js"
},
{
"file": "department2.division.manager.js"
},
{
"file": "department3.js"
},
{
"file": "department4.assistant.division.manager.1.js"
},
{
"file": "department4.assistant.division.manager.2.js"
},
{
"file": "department4.division.manager.js"
},
{
"file": "department5.assistant.division.manager.1.js"
},
{
"file": "department5.division.manager.js"
},
{
"file": "department6.division.manager.js"
},
{
"file": "department7.division.manager.js"
},
{
"file": "department8.division.manager.js"
},
{
"file": "department9.division.manager.js"
},
{
"file": "department10.js"
},
{
"file": "department11.division.manager.js"
},
{
"file": "department12.assistant.division.manager.1.js"
},
{
"file": "department12.assistant.division.manager.2.js"
},
{
"file": "department12.assistant.division.manager.3.js"
},
{
"file": "department12.assistant.division.manager.4.js"
},
{
"file": "department12.division.manager.js"
},
{
"file": "department13.js"
}
]
},
{
"accountName": "jason.bourne",
"files": [
{
"file": "department1.assistant.division.manager.js"
},
{
"file": "department1.division.manager.js"
},
{
"file": "department2.assistant.division.manager.1.js"
},
{
"file": "department2.assistant.division.manager.2.js"
},
{
"file": "department2.division.manager.js"
},
{
"file": "department3.js"
},
{
"file": "department4.assistant.division.manager.1.js"
},
{
"file": "department4.assistant.division.manager.2.js"
},
{
"file": "department4.division.manager.js"
},
{
"file": "department5.assistant.division.manager.1.js"
},
{
"file": "department5.division.manager.js"
},
{
"file": "department6.division.manager.js"
},
{
"file": "department7.division.manager.js"
},
{
"file": "department8.division.manager.js"
},
{
"file": "department9.division.manager.js"
},
{
"file": "department10.js"
},
{
"file": "department11.division.manager.js"
},
{
"file": "department12.assistant.division.manager.1.js"
},
{
"file": "department12.assistant.division.manager.2.js"
},
{
"file": "department12.assistant.division.manager.3.js"
},
{
"file": "department12.assistant.division.manager.4.js"
},
{
"file": "department12.division.manager.js"
},
{
"file": "department13.js"
}
]
},
{
"accountName": "admin.bourne",
"files": [
{
"file": "department1.assistant.division.manager.js"
},
{
"file": "department1.division.manager.js"
},
{
"file": "department2.assistant.division.manager.1.js"
},
{
"file": "department2.assistant.division.manager.2.js"
},
{
"file": "department2.division.manager.js"
},
{
"file": "department3.js"
},
{
"file": "department4.assistant.division.manager.1.js"
},
{
"file": "department4.assistant.division.manager.2.js"
},
{
"file": "department4.division.manager.js"
},
{
"file": "department5.assistant.division.manager.1.js"
},
{
"file": "department5.division.manager.js"
},
{
"file": "department6.division.manager.js"
},
{
"file": "department7.division.manager.js"
},
{
"file": "department8.division.manager.js"
},
{
"file": "department9.division.manager.js"
},
{
"file": "department10.js"
},
{
"file": "department11.division.manager.js"
},
{
"file": "department12.assistant.division.manager.1.js"
},
{
"file": "department12.assistant.division.manager.2.js"
},
{
"file": "department12.assistant.division.manager.3.js"
},
{
"file": "department12.assistant.division.manager.4.js"
},
{
"file": "department12.division.manager.js"
},
{
"file": "department13.js"
}
]
}
]
Here is my C# code and what I tried so far but I am stuck
public void loadAccessControl(String fileName)
{
var locationInformation = System.Environment.CurrentDirectory + Path.DirectorySeparatorChar + fileName;
using (StreamReader file = File.OpenText(locationInformation))
using (JsonTextReader reader = new JsonTextReader(file))
{
JArray o = (JArray)JToken.ReadFrom(reader);
items = o;
MessageBox.Show(items.ToString());
}
foreach (var item in items.Children())
{
var itemProperties = item.Children<JProperty>();
var myElement = itemProperties.FirstOrDefault(x => x.Name == "accountName");
var myElementValue = myElement.Value; ////This is a JValue type
if (myElementValue.ToString().Contains(Environment.UserName))
{
MessageBox.Show("Authorized");
authorizedAccess = true;
myElement = itemProperties.FirstOrDefault(x => x.Name == "files");
myElementValue = myElement.Value; ////This is a JValue type
break;
}
}
}
As I said before, I am new to using Newtonsoft's library so if there is a better way, please let me know.