Share Link
Copied to clipboard
Embed on Your Page
Copied to clipboard
We Stand with Ukraine
[Fork] [Fork] https://stackoverflow.com/questions/56566651/c-sharp-parsing-azure-policy-rule-json-to-make-a-tree#56566651 by dbc_MinLength
Environment version: 4.0.30319.42000
Json.NET version: Newtonsoft.Json, Version=12.0.0.0, Culture=neutral, PublicKeyToken=30ad4fe6b2a6aeed

Input JSON:
{
  "allOf": [
    {
      "field": "type",
      "equals": "Microsoft.KeyVault/vaults"
    },
    {
      "anyOf": [
        {
          "field": "Microsoft.KeyVault/vaults/networkAcls.virtualNetworkRules[*].id",
          "exists": "false"
        },
        {
          "field": "Microsoft.KeyVault/vaults/networkAcls.virtualNetworkRules[*].id",
          "notLike": "*"
        },
        {
          "field": "Microsoft.KeyVault/vaults/networkAcls.defaultAction",
          "equals": "Allow"
        }
      ]
    }
  ]
}

JSON dump:
    allOf   -> -
        [0]   -> -
            field   -> type
            equals   -> Microsoft.KeyVault/vaults
        [1]   -> -
            anyOf   -> -
                [0]   -> -
                    field   -> Microsoft.KeyVault/vaults/networkAcls.virtualNetworkRules[*].id
                    exists   -> false
                [1]   -> -
                    field   -> Microsoft.KeyVault/vaults/networkAcls.virtualNetworkRules[*].id
                    notLike   -> *
                [2]   -> -
                    field   -> Microsoft.KeyVault/vaults/networkAcls.defaultAction
                    equals   -> Allow
Input JSON:
{
  "array": [
    1,
    2,
    "3",
    4,
    {
      "aa": [
        "bb"
      ]
    },
    "z"
  ],
  "JConstructor example": new Something(
    1,
    2,
    3
  ),
  "null": null,
  "allOf": [
    {
      "field": "type",
      "equals": "Microsoft.KeyVault/vaults"
    },
    {
      "anyOf": [
        {
          "field": "Microsoft.KeyVault/vaults/networkAcls.virtualNetworkRules[*].id",
          "exists": "false"
        },
        {
          "field": "Microsoft.KeyVault/vaults/networkAcls.virtualNetworkRules[*].id",
          "notLike": "*"
        },
        {
          "field": "Microsoft.KeyVault/vaults/networkAcls.defaultAction",
          "equals": "Allow"
        }
      ]
    }
  ]
}

JSON dump:
    array   -> -
        [0]   -> 1
        [1]   -> 2
        [2]   -> 3
        [3]   -> 4
        [4]   -> -
            aa   -> -
                [0]   -> bb
        [5]   -> z
    JConstructor example   -> new Something
        [0]   -> 1
        [1]   -> 2
        [2]   -> 3
    null   -> 
    allOf   -> -
        [0]   -> -
            field   -> type
            equals   -> Microsoft.KeyVault/vaults
        [1]   -> -
            anyOf   -> -
                [0]   -> -
                    field   -> Microsoft.KeyVault/vaults/networkAcls.virtualNetworkRules[*].id
                    exists   -> false
                [1]   -> -
                    field   -> Microsoft.KeyVault/vaults/networkAcls.virtualNetworkRules[*].id
                    notLike   -> *
                [2]   -> -
                    field   -> Microsoft.KeyVault/vaults/networkAcls.defaultAction
                    equals   -> Allow
Cached Result
Last Run: 11:49:26 am
Compile: 0.295s
Execute: 0.213s
Memory: 1.73Mb
CPU: 0.312s