使用Powershell< ConvertFrom-Json解析JSON

时间:2018-05-14 22:56:56

标签: arrays json powershell

我正在尝试使用Powershell的ConvertFrom-Json功能解析此JSON,但它似乎截断了数据:

{
  "MessagesMonitoring": {
    "version": 1,
    "description": "Message Description"
  },
  "data": {
    "swindon": {
      "totalMessages": 0,
      "identifier": [
        {
          "name": "ET",
          "staleCount": 4
        },
        {
          "name": "ET_2",
          "staleCount": 4
        }
      ]
    },
    "Reading": {
      "totalMessages": 0,
      "identifier": [
        {
          "name": "J3",
          "staleCount": 2
        }
      ]
    },
    "Yanki": {
      "totalMessages": 0,
      "identifier": [
        {
          "name": "UT",
          "staleCount": 4
        },
        {
          "name": "UT_2",
          "staleCount": 4
        }
      ]
    }
  }
}

请求:

 $request = 'http://localhost:8000/hi.json'
 Invoke-WebRequest $request |
 ConvertFrom-Json |
 Select swindon

回应:

StatusCode        : 200                                                         StatusDescription : OK
Content           : {
                      "MessagesMonitoring": {
                        "version": 1,
                        "description": "Message Description"
                      },
                      "data": {
                        "swindon": {
                          "totalMessages": 0,
                          "identifier": [
                            {
                              "na...

不确定我可能做错了什么。关于如何将JSON解析为这种格式的任何建议/指导都会很棒。

swindon|identifier|ET|4
swindon|totalMessages|0
swindon|identifier|ET2|4

Reading|identifier|J3|2
Reading|totalMessages|0

Yanki|identifier|UT|4
Yanki|identifier|U_T|4
Yanki|totalMessages|0

1 个答案:

答案 0 :(得分:0)

你错过了一步。响应的Content元素包含JSON,因此您需要将其输入ConvertFrom-Json

$request = 'http://localhost:8000/hi.json'
$resp = $(Invoke-WebRequest $request).Content | ConvertFrom-Json

然后,在JSON中你有一个字典,其中"data"键包含我认为你感兴趣的信息,使用这种语法访问它:

$resp.data

这应该让你开始