Powershell:我解析嵌套的JSON

时间:2014-10-10 16:48:52

标签: json powershell

我一直在使用PowerShell来检索对Brightpearl的API调用结果作为JSON字符串:

我想只检索名为results ....的部分。

"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]]}

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

PS C:> convertfrom-json $BPOrders.Content

response                                                         reference                                                       
--------                                                         ---------                                                       
@{metaData=; results=System.Object[]}                            @{orderTypeNames=; orderPaymentStatusNames=; orderStatusNames...

我想也许其余部分可以通过深入研究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"
        }
    }
}

2 个答案:

答案 0 :(得分:3)

ConvertFrom-Json $JSONObject

然后你可以像:

那样解决它们
$JSONObject.response.results

答案 1 :(得分:1)

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