正确使用Convertfrom-json

时间:2018-10-09 10:00:30

标签: json powershell

我正在尝试利用从JSON格式的API中捕获的一些数据,但是却难以以任何真正有意义的方式来利用它。我不确定数据是否与预期不符,或者问题出在我处理数据的方式上。

$result =  Invoke-WebRequest -Method Post -URI "http://vwhmcs.com/includes/api.php" -Body $Body

这是API调用,从这里我需要的数据在$ result.content中,看起来像这样

{"result":"success","totalresults":2,"startnumber":0,"numreturned":2,"clients":{"client":[{"id":2,"firstname":"Edward","lastname":"Franks","companyname":"","email":"EdwardFranks@mail.com","datecreated":"2018-10-09","groupid":0,"status":"Inactive"},{"id":1,"firstname":"Frank","lastname":"Tighe","companyname":"U32 Consultation","email":"frank@u32.co.uk","datecreated":"2018-10-08","groupid":0,"status":"Active"}]}}

哪个是有效的JSON(我已对其进行验证)。尝试使之在我正在使用时可用

$result = ($result.content | convertfrom-json)

表面上似乎起作用

PS C:\WINDOWS\system32> $result


result       : success
otalresults : 2
startnumber  : 0
numreturned  : 2
clients      : @{client=System.Object[]}

但是,如果我尝试浏览这些数据,就会发现它没有被完全解析。

 PS C:\WINDOWS\system32> $result.clients | ft -AutoSize -Wrap

client                                                                                                                                                                                       
------                                                                                                                                                                                       
{@{id=2; firstname=Edward; lastname=Franks; companyname=; email=EdwardFranks@mail.com; datecreated=2018-10-09; groupid=0; status=Inactive}, @{id=1; firstname=Frank; lastname=Tighe;companyname=U32 Consultation; email=frank@u32.co.uk; datecreated=2018-10-08; groupid=0; status=Active}}  

现在,我可以看到此数据不是有效的JSON格式,但是如果您较早地检查了数据,则可以。 convertfrom-json函数已从其中删除了语音标记,这向我表明数据很好,但是我错误地调用了此函数。

有人可以告诉我如何正确执行此操作吗?

1 个答案:

答案 0 :(得分:0)

您似乎需要的是

$TEST.clients.client | ft

JSON是

"clients":{
    "client":[
        {Client 1 Information Here},
        {Client 2 Information Here}

“客户”是哈希表 {,其中

“客户”是数组 [ of

“ {客户信息}”哈希表