2016-05-05 5 views
2

Ich arbeite mit der JIRA API mit dem Problem Changelog. Der API-Aufruf gibt JSON Schlüssel/Wert-Paare zurück. Einer der Schlüssel ist toString, der im PS Custom Object als NoteProperty dargestellt wird. (Andere Schlüssel sind "to" "from" "fromString" usw.) Wenn ich die toString NoteProperty referenziere, denkt PS, dass ich die ToString() String-Methode aufruft und einen OverLoadDefinition Fehler gibt.Powershell Custom Object toString-Wert wird als Note-Eigenschaft verwendet

$response ist die Variable, die ich verwende, um die API-Aufrufausgabe zu speichern.

$response.changelog.histories.items.to   # this works fine 
$response.changelog.histories.items.fromString # this works fine 
$response.changelog.histories.items.toString  # This fails. 

PS denkt, ich will die toString() Methode aufzurufen.

Gibt es eine Möglichkeit, PS zu zwingen, den im Schlüssel toString gespeicherten Wert NoteProperty zu verwenden?

+0

Können Sie Code geben, der das reproduziert? Wenn ich '$ test =" {'items': {'toString': 2}} "| Konvertieren von-Json; $ test.items.toString' dann gibt es den Wert 2 zurück. Und es zeigt toString ist eine NoteProperty für ein PSCustomObject. – TessellatingHeckler

Antwort

0

versuchen, es in einzelne brakets wie folgt zu setzen:

$response.changelog.histories.items.'toString' 
+0

Danke, aber ich bekomme das gleiche Ergebnis - OverloadDefintions. – jure

0

Durch einige Optionen versuchen, fand ich etwas, das funktioniert:

$JiraIssue = "https://jira/rest/api/2/issue/DAA-2662?fields=key,id,reporter&expand=changelog" 
$response = Invoke-RestMethod -Method GET -Uri $JiraIssue -Headers @{"Authorization"="Basic $myCreds"} -ContentType application/json 

$response.changelog.histories.items.tostring # FAILS 

$response.changelog.histories.items[0].tostring # WORKS 
foreach ($i in $response.changelog.histories.items) {$i.tostring } # WORKS 

Als ich darauf verweisen items.toString sieht aus wie PS verwirrt zwischen der toString-Methode und der NoteProperty mit demselben Namen. Aber wenn ich einen einzelnen Array-Wert innerhalb der Elemente array items [0] .toString referenziere, weiß PS, dass ich die NoteProperty möchte.

Weitere Kommentare oder Einblicke sind herzlich willkommen!