2013-07-29 30 views
27

ConvertTo-Json ile ilgili bir sorun yaşıyorum ve davranışı ve/veya yanlış yaptığım şeyi anlamaya çalışıyordum.Powershell ConvertTo-json gömülü hashtable ile

komutları bu sırayı göz önünde bulundurun: İkinci bir dönüşüm, bu çıkış verir

{ 
    "ID": 10, 
    "Config": { 
        "ID": 11, 
        "Config": { 
            "ID": 12, 
            "Config": "end" 
           } 
       } 
} 

:

[email protected]{ID=10;[email protected]{ID=11;[email protected]{ID=12;Config='end'}}} 
ConvertTo-json $val 
ConvertTo-json @($val) 

ilk dönüşüm bu çıkış verir

[ 
    { 
     "ID": 10, 
     "Config": { 
         "ID": 11, 
         "Config": "System.Collections.Hashtable" 
        } 
    } 
] 

Öyle görünüyor ki içinde dizi durumunda dönüşüm yanlış. Bunun neden olduğuna dair bir fikrin var mı?

O derinliğe sahip bir sorun var

cevap

45

, varsayılan değer 2'dir, deneyebilirsin:

ConvertTo-json @($val) -Depth 5 
+1

Güzel, tükenmiş bir (ConvertTo-Json cmdlet'ine için mümkün olan maksimum) sonsuz derinliği belirtir Günün iyi bir parçasını bugün neden bazı JSON derinlik 3'te "" @ {name = 1.0} "olarak ortaya çıktığını anlamaya çalışıyoruz. Sonunda bir kaza geçirmeden önce bir soruyu ve her şeyi sordum. – Ellesedil

+0

"Sonsuz derinliği" belirtmenin bir yolu var mı? –

+0

Microsoft belgeleriyle ilgili hiçbir bilgiyi bulamıyorum. Ben asla 6'dan fazla test etmem. Bir "sonsuz derinlik" teorik, gerçekten 32'den daha fazlasına ihtiyacınız var mı? – JPBlanc

0
-Depth $([int32]::MaxValue) 

+0

ConvertTo-Json: Serileştirme için izin verilen maksimum derinlik 100'dür. – Nick

+0

Gerekenden daha büyük değerler, tamamen aptal performans hitleri üretir. oraya bile gitme –

+0

@ConradB Sadece merak ediyor ... Bunu bir gerçek için biliyor musun? Bir Depth parametresinin neden olduğunu açıkladığı için böyle olacağını düşündüm, ama testleri mi yaptın? – PhilAI