I'm a beginner in development so please don't judge. I need to read many (like 74) JSON files and all of them have other values. How can I read the JSON files dynamicly and can select specific values?
Currently I use Newtonsoft Json, but I don't know how I can get specific values. So as a sample this is one of the JSON file.
{
"value": [
{
"resourceRef": "/accessControlLists/abc123",
"resourceId": "abc123",
"resourceMetadata": {
"resourceName": "SCVMM Default ACL"
},
"etag": "W/\"ea02b098-bcd1-406a-abff-ab380011d510\"",
"instanceId": "e123f536-ffc1-429e-b67e-50627b1613c8",
"properties": {
"provisioningState": "Succeeded",
"aclRules": [
{
"resourceRef": "/accessControlLists/abc123/aclRules/def456",
"resourceId": "def456",
"etag": "W/\"ea02b098-bcd1-406a-abff-ab380011d510\"",
"instanceId": "e3467412-e9c7-48a0-9d45-bdaedbe72d2d",
"properties": {
"provisioningState": "Succeeded",
"protocol": "All",
"sourcePortRange": "*",
"destinationPortRange": "*",
"action": "Allow",
"sourceAddressPrefix": "*",
"destinationAddressPrefix": "*",
"priority": "65000",
"description": "SCVMM Default Rule - Allow All",
"type": "Inbound",
"logging": "Enabled"
}
}
],
"ipConfigurations": [],
"subnets": []
}
}
],
"nextLink": ""
}
The second file is like this.
{
"resourceRef": "/virtualNetworkManager/",
"instanceId": "00000000-0000-0000-0000-000000000000",
"properties": {
"provisioningState": "Succeeded",
"distributedRouterState": "Enabled",
"networkVirtualizationProtocol": "VXLAN"
}
}
So how can I read as a sample the description of the first file? And how can I do it dynamicly?
Thanks for help!
Edit:
dynamic
with JsonConvert
worked for me.
string path = string.Empty;
Console.Write("Please enter json file path: ");
path = Console.ReadLine();
dynamic obj = JObject.Parse(File.ReadAllText(path));
for (int i = 0; i < obj.value.Count; i++)
{
for (int j = 0; j < obj.value[i].properties.aclRules.Count; j++)
{
Console.WriteLine(obj.value[i].properties.aclRules[j].properties.description);
}
}