【问题标题】:Powershell: l parsing nested JSONPowershell: l 解析嵌套的JSON
【发布时间】:2023-03-29 09:13:01
【问题描述】:

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

我只想检索名为 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"
        }
    }
}

【问题讨论】:

    标签: json powershell


    【解决方案1】:
    ConvertFrom-Json $JSONObject
    

    那么你可以像这样称呼他们:

    $JSONObject.response.results
    

    【讨论】:

    • 这是一个正确的答案,非常感谢!
    【解决方案2】:

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

    【讨论】:

    • 我在我的手机上输入这个,所以我需要一些时间来整理 select-object 的确切参数
    • 谢谢...会看看,并报告。 --- L
    • 嗨....杰森:根据你的建议,我做了以下事情:PS C:>BPJson= BPOrders.Content | ConvertToJson
    • 嗨....杰森:根据你的建议,我做了以下事情:PS C:>$BPJson= $BPOrders.Content | ConvertToJson 这让我可以检查里面的对象,这让我可以将结果打印为 $BPJson.Response.Results。这将打印为一个字符串,可以转换为 JSON,这正是我正在寻找的内容......完整内容字符串的子集仅包含我正在查询的实际数据。非常感谢您的帮助,来自 PowerShell Noobie!
    猜你喜欢
    • 1970-01-01
    • 2020-05-19
    • 1970-01-01
    • 1970-01-01
    • 2019-01-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-01-25
    相关资源
    最近更新 更多