2017-05-30 2 views
2

Ich muss einige Informationen von JSON in Powershell lesen. Das Problem, das ich habe, ist, dass nach dem Abschnitt "Pfade" ich den nächsten Namen z. wie der Pfad heißt, weil er sich ändert. Danach muss ich den "get" -Bereich und dann den "parameters" -Bereich holen und dort endlich den Namen und die benötigten Felder eintragen.Wie durch JSON in Powershell durchlaufen werden, ohne den Wert angeben zu können.

Ich kann den Hostnamen mit $info.host und die Pfade wie $info.paths abrufen. Dann bekomme ich die einzelnen Pfadnamen, indem ich den Pfad durchschlinge, um jeden Namen so zu bekommen.

foreach($item in $pName) 
{ 
    $item 
} 

Aber dann ist das so weit wie ich versuchte ich $ item.childItem mit bekommen können, aber es funktioniert nicht. Gibt es sowieso etwas wie $ item.paths.childItems [$ 1] .get.parameters und dann den Namen und die erforderlichen Feldwerte?

Die json sieht wie folgt aus:

{ 
"swagger": "2.0", 
"info": { 
"version": "v1", 
"title": "Requirements.API" 
}, 
"host": "replica.net", 
"schemes": [ 
"http" 
], 
"paths": { 
"/": { 
"get": { 
"tags": [ 
"Alive" 
], 
"operationId": "Alive_Get", 
"consumes": [], 
"produces": [ 
"application/json", 
"text/json", 
"application/xml", 
"text/xml" 
], 
"responses": { 
"200": { 
"description": "OK", 
"schema": { 
"$ref": "#/definitions/Object" 
} 
} 
}, 
"deprecated": false 
} 
}, 
"/requirements/email-docs": { 
"get": { 
"tags": [ 
"CustomerRequirement" 
], 
"operationId": "", 
"consumes": [], 
"produces": [ 
"application/json", 
"text/json", 
"application/xml", 
"text/xml" 
], 
"parameters": [ 
{ 
"name": "name", 
"in": "query", 
"required": true, 
"type": "integer", 
"format": "int32" 
} 
], 
"responses": { 
"200": { 
"description": "OK", 
"schema": { 
"type": "array", 
"items": { 
"$ref": "#/definitions/UploadResponse" 
} 
} 
} 
}, 
"deprecated": false 
} 
}, 

Antwort

0

Ich habe es dies mit:

for($i=0;$i-lt$pName.Count;$i++) 
      { 
       $test | Select -ExpandProperty paths | select -ExpandProperty $pName[$i] | select -ExpandProperty get 

      } 
0

Ihre JSON-Datei nicht klar formatiert ist und vermisst einige abschließende Klammern. Doch nach der JSON-Datei schließen und es in Powershell (ConvertFrom-Json) zu lesen, Ihr Powershell-Objekt sieht wie folgt aus (mit PSON oder Write-Log):

{ 
     swagger: "2.0", 
     info: { 
       version: "v1", 
       title: "Requirements.API" 
     }, 
     host: "replica.net", 
     schemes: @(
       "http" 
     ), 
     paths: { 
       /: { 
         get: { 
           tags: @(
             "Alive" 
           ), 
           operationId: "Alive_Get", 
           consumes: @(), 
           produces: @(
             "application/json", 
             "text/json", 
             "application/xml", 
             "text/xml" 
           ), 
           responses: { 
             200: { 
               description: "OK", 
               schema: { 
                 $ref: "#/definitions/Object" 
               } 
             } 
           }, 
           deprecated: $False 
         } 
       }, 
       /requirements/email-docs: { 
         get: { 
           tags: @(
             "CustomerRequirement" 
           ), 
           operationId: "", 
           consumes: @(), 
           produces: @(
             "application/json", 
             "text/json", 
             "application/xml", 
             "text/xml" 
           ), 
           parameters: @(
             { 
               name: "name", 
               in: "query", 
               required: $True, 
               type: "integer", 
               format: "int32" 
             } 
           ), 
           responses: { 
             200: { 
               description: "OK", 
               schema: { 
                 type: "array", 
                 items: { 
                   $ref: "#/definitions/UploadResponse" 
                 } 
               } 
             } 
           }, 
           deprecated: $False 
         } 
       } 
     } 
} 

Also ich denke, die Eigenschaften/Werte, in der Sie suchen sind:

$Item.paths.PSObject.Properties | Select -ExpandProperty Name 
Verwandte Themen