Powershell Custom Object toString值用作Note属性

时间:2016-05-05 05:44:07

标签: powershell jira-rest-api

我正在使用问题更改日志JIRA API。 API调用返回JSON键/值对。其中一个键是toString,它在PS自定义对象中表示为NoteProperty。 (其他键是“to”“from”“fromString”等。)当我引用toString NoteProperty时,PS认为我正在调用ToString()字符串方法,它给出OverLoadDefinition错误。

$response是我用来存储API调用输出的变量。

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

PS认为我想调用toString()方法。

有没有办法强制PS使用NoteProperty密钥中存储的toString值?

2 个答案:

答案 0 :(得分:0)

尝试将它放入这样的单个支架中:

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

答案 1 :(得分:0)

通过尝试一些选项,我发现了一些有效的方法:

$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

当我引用items.toString时,看起来PS在toString方法和具有相同名称的NoteProperty之间混淆。但是当我在items数组项[0] .toString中引用单个数组值时,PS知道我想要NoteProperty。

欢迎任何进一步的评论或见解!