Powershell:l 解析嵌套的 JSON

use*_*305 4 powershell json

我一直在使用 PowerShell 以 JSON 字符串的形式检索对 Brightpearl 的 API 调用的结果:

我只想检索名为结果的部分....

"results":[[1,1,207,4,3,"2014-09-18T14:15:50.000-04:00",4,"#1014",2],[2,1,207,1,3,"2014-09-29T13:20:52.000-04:00",4,"#1015",2],[3,1,207,1,3,"2014-09-29T13:25:39.000-04:00",4,"#1016",2]]}
Run Code Online (Sandbox Code Playgroud)

使用 ConvertFrom-Json($BpResults.Content),我只得到外部 JSON....

PS C:> convertfrom-json $BPOrders.Content

response                                                         reference                                                       
--------                                                         ---------                                                       
@{metaData=; results=System.Object[]}                            @{orderTypeNames=; orderPaymentStatusNames=; orderStatusNames...
Run Code Online (Sandbox Code Playgroud)

我想也许剩下的一些可以通过深入研究 System.Object[] 来获得……但无法弄清楚访问它的语法。理想情况下,我想将结果写入 .CSV 文件。

有任何想法吗?

"Original": {
    "response": {
        "metaData": {
            "resultsAvailable": 3,
            "resultsReturned": 3,
            "firstResult": 1,
            "lastResult": 3,
            "columns": [
                {
                    "name": "orderId",
                    "sortable": true,
                    "filterable": true,
                    "reportDataType": "IDSET",
                    "required": false
                },
                {
                    "name": "orderTypeId",
                    "sortable": true,
                    "filterable": true,
                    "reportDataType": "INTEGER",
                    "referenceData": [
                        "orderTypeNames"
                    ],
                    "required": false
                },
                {
                    "name": "contactId",
                    "sortable": true,
                    "filterable": true,
                    "reportDataType": "INTEGER",
                    "required": false
                },
                {
                    "name": "orderStatusId",
                    "sortable": true,
                    "filterable": true,
                    "reportDataType": "INTEGER",
                    "referenceData": [
                        "orderStatusNames"
                    ],
                    "required": false
                },
                {
                    "name": "orderStockStatusId",
                    "sortable": true,
                    "filterable": true,
                    "reportDataType": "INTEGER",
                    "referenceData": [
                        "orderStockStatusNames"
                    ],
                    "required": false
                },
                {
                    "name": "createdOn",
                    "sortable": true,
                    "filterable": true,
                    "reportDataType": "PERIOD",
                    "required": false
                },
                {
                    "name": "createdById",
                    "sortable": true,
                    "filterable": true,
                    "reportDataType": "INTEGER",
                    "required": false
                },
                {
                    "name": "customerRef",
                    "sortable": true,
                    "filterable": true,
                    "reportDataType": "STRING",
                    "required": false
                },
                {
                    "name": "orderPaymentStatusId",
                    "sortable": true,
                    "filterable": true,
                    "reportDataType": "INTEGER",
                    "referenceData": [
                        "orderPaymentStatusNames"
                    ],
                    "required": false
                }
            ],
            "sorting": [
                {
                    "filterable": {
                        "name": "orderId",
                        "sortable": true,
                        "filterable": true,
                        "reportDataType": "IDSET",
                        "required": false
                    },
                    "direction": "ASC"
                }
            ]
        },
        "results": [
            [
                1,
                1,
                207,
                4,
                3,
                "2014-09-18T14: 15: 50.000-04: 00",
                4,
                "#1014",
                2
            ],
            [
                2,
                1,
                207,
                1,
                3,
                "2014-09-29T13: 20: 52.000-04: 00",
                4,
                "#1015",
                2
            ],
            [
                3,
                1,
                207,
                1,
                3,
                "2014-09-29T13: 25: 39.000-04: 00",
                4,
                "#1016",
                2
            ]
        ]
    },
    "reference": {
        "orderTypeNames": {
            "1": "SALES_ORDER"
        },
        "orderPaymentStatusNames": {
            "2": "PARTIALLY_PAID"
        },
        "orderStatusNames": {
            "1": "Draft/Quote",
            "4": "Invoiced"
        },
        "orderStockStatusNames": {
            "3": "Allfulfilled"
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

小智 5

ConvertFrom-Json $JSONObject
Run Code Online (Sandbox Code Playgroud)

那么你可以像这样解决它们:

$JSONObject.response.results
Run Code Online (Sandbox Code Playgroud)


Jas*_*ske 2

ConvertFrom-Json返回一个可以使用Select-Object检查的对象。