Je suis nouveau à Powershell. J'ai le script PS suivant. J'essaie de déterminer le "code" powershell pour identifier lequel, le cas échéant, "field" est un tableau ou hashtable. Le texte source est un fichier json.Essayer d'identifier le type d'élément PS Object dans le code
$txt = @"
{
"id": "02002010",
"booktitle": "",
"pagetitle": "Demo Page",
"parent": "02002000",
"img": [
{
"imgfile": "02A.png",
"imgname": "02A.png"
}
],
"fmt": "",
"entries": [
{
"itemid": "1",
"partnumber": "1234567",
"partdescription": "Washer",
"partqty": "2",
"Manufacturer": "ACME",
"TYPE": "Stainless",
"partdescriptionlocal": "Washer"
},
{
"itemid": "2",
"partnumber": "98765-B",
"partdescription": "Screw",
"partqty": "8",
"Manufacturer": "Widget Inc",
"TYPE": "Galv",
"partdescriptionlocal": "Screw"
}]
}
"@
$json= ConvertFrom-Json -inputobject $txt
foreach($pct in $json) {
$pct}
La sortie du script est
id : 02002010
booktitle :
pagetitle : Demo Page
parent : 02002000
img : {@{imgfile=02A.png; imgname=02A.png}}
fmt :
entries : {@{itemid=1; partnumber=1234567; partdescription=Washer; partqty=2; Manufacturer=ACME; TYPE=Stainless;
partdescriptionlocal=Washer}, @{itemid=2; partnumber=98765-B; partdescription=Screw; partqty=8;
Manufacturer=Widget Inc; TYPE=Galv; partdescriptionlocal=Screw}}
Ma question:
Quelle propriété/paramètre ??? identifie img, et entrées comme "champs" dont les valeurs sont des tableaux ??? J'essaie d'identifier de tels champs (sous-réseaux) en utilisant PS sans connaître explicitement chaque nom de champ.
Merci d'avance.
Ou ils pourraient simplement utiliser la propriété TypeNameOfValue des annonces Propriétés du psobject, et rappelez-vous que tout ce qui se termine par '[]' est un tableau : '$ json.psobject.Properties | FT Nom, TypeNameOfValue' – TheMadTechnician
Merci à vous deux mjolinor et TheeMatechnician. Puis-je demander un autre aspect? Existe-t-il une technique simple pour identifier uniquement les éléments qui ont la propriété System.array. Autrement dit, quel que soit le fichier json, puis-je identifier les éléments/champs qui ont la propriété system.array? – Orange
Désolé pour l'orthographe TheMadTechnician --- clés collantes et pas assez de commentaires. J'ai découvert $ json.psobject.Properties | où typenameofvalue -eq "system.object []" | ft nom, typenameofvalue pour obtenir Nom TypeNameOfValue ---- --------------- img System.Object [] entries System.Object [] – Orange