azure-cli icon indicating copy to clipboard operation
azure-cli copied to clipboard

Cannot parse json output due to duplicate keys

Open kamalca opened this issue 2 years ago • 2 comments

Describe the bug

Some commands return json values with duplicate keys when case-insensitive.

Here is an example:

az vm list-skus --location centralus --size "Standard_D4s_v5" --all -o json | ConvertFrom-Json

ConvertFrom-Json : Cannot convert the JSON string because a dictionary that was converted from the string contains the
duplicated keys 'Name' and 'name'.
At line:1 char:9
+ $json | ConvertFrom-Json
+         ~~~~~~~~~~~~~~~~
    + CategoryInfo          : InvalidOperation: (:) [ConvertFrom-Json], InvalidOperationException
    + FullyQualifiedErrorId : DuplicateKeysInJsonString,Microsoft.PowerShell.Commands.ConvertFromJsonCommand

This is also an issue with ConvertFrom-Json not being case-sensitive. However, is it possible to restrict the output of az cli to not include duplicate case-insensitive keys?

The other reason I point this out is because the name field is not really being used:

...
"zoneDetails": [
  {
    "Name": [
      "3",
      "2",
      "1"
    ],
    "capabilities": [
      {
        "name": "UltraSSDAvailable",
        "value": "True"
      }
    ],
    "name": null
  }
],
...

This lowercase 'name' being set to null seems to not be serving any purpose.

Related command

az vm list-skus

Errors

ConvertFrom-Json : Cannot convert the JSON string because a dictionary that was converted from the string contains the duplicated keys 'Name' and 'name'.

Issue script & Debug output

N/A

Expected behavior

Any command with -o json being piped to ConvertFrom-Json should always successfully result in an object.

Environment Summary

"azure-cli": "2.53.1", "azure-cli-core": "2.53.1", "azure-cli-telemetry": "1.1.0", "extensions": {}

Additional context

No response

kamalca avatar Oct 26 '23 19:10 kamalca

Thank you for opening this issue, we will look into it.

yonzhan avatar Oct 26 '23 19:10 yonzhan

I am also getting similar error during ARM deployment .

ConvertFrom-Json : Cannot convert the JSON string because a dictionary that was converted from the string contains the duplicated keys 'eTag' and 'etag'. At ..............................-Deploy.ps1:124 char:58

  • ... me = $(az aks list -g $resourceGroup -o json | ConvertFrom-Json).name
  •                                                ~~~~~~~~~~~~~~~~
    
    • CategoryInfo : InvalidOperation: (:) [ConvertFrom-Json], InvalidOperationException
    • FullyQualifiedErrorId : DuplicateKeysInJsonString,Microsoft.PowerShell.Commands.ConvertFromJsonCommand

Can you please suggest any fix ?

ManjulaChintharla avatar May 07 '24 16:05 ManjulaChintharla