ConvertFrom-JSON не будет принимать convertto-json с детьми при работе с WebServiceProxy

Я извлекаю данные из API, используя New-WebServiceProxy в PowerShell 4.0, а затем передаю их в файл JSON для просмотра и импорта в другой службе API (той же версии API и т. Д., Просто на другом хосте).

$tasklist.Taskconfig | ConvertTo-JSON-Depth 50 -As String | Out-File -FilePath $exportpath\$name.xml -Force

Дает мне мой XML, содержащий TaskConfig. В этом случае TaskConfig - это тип объекта, автоматически генерируемый API, с которым я взаимодействую. Когда я хочу импортировать контент, который я использую:

$taskconfig      = (Get-Content "$taskjson") -join "`n" | ConvertFrom-Json

но когда я запускаю это, он не может создать объект. Я предполагаю, что это потому, что JSON содержит вложенные дочерние элементы, давая

Невозможно преобразовать значение "@{Name=plugindive; Value=;> Children=System.Object[]}" в тип "Microsoft.PowerShell.Commands.NewWebserviceProxy.AutogeneratedTypes.WebServiceProxy1rcleWeb_WebClientAPI_asmx_wsdl.Taskfig Ошибка: "Не удалось преобразовать"@{Name=plugindive; Value=;Children=System.Object[]}"значение типа"System.Management.Automation.PSCustomObject"для ввода" Microsoft.PowerShell.Commands.NewWebserviceProxy.AutogeneratedTypes.WebServiceProxy1rcleWeb_WebClientAPI_aslx "w.sff.

Я попытался явно указать тип объекта:

$taskconfig      = [Microsoft.PowerShell.Commands.NewWebserviceProxy.AutogeneratedTypes.WebServiceProxy1rcleWeb_WebClientAPI_asmx_wsdl.TaskConfig](Get-Content "$taskjson" | Out-string | ConvertFrom-Json)

а также создание объекта, а затем пытается добавить детей из моего JSON -

$taskconfig.children = $json.children

Но все они терпят неудачу одинаково.

Мне кажется, что эта проблема в PowerShell 5.0 не кажется достаточно интересной, но я не могу понять, почему - есть ли другой способ решения этой проблемы?

Добавлен пример JSON ниже

{"Name": "plugindive",
"Value": null,
"Children": [{
        "Name": "auto",
        "Value": "False",
        "Children": [

        ]
    },
    {
        "Name": "categories",
        "Value": null,
        "Children": [{
                "Name": "Module Z",
                "Value": "False",
                "Children": [

                ]
            },
            {
                "Name": "Module A",
                "Value": "False",
                "Children": [

                ]
            },
            {
                "Name": "Module B",
                "Value": "False",
                "Children": [

                ]
            },
            {
                "Name": "Module C",
                "Value": "False",
                "Children": [

                ]
            }
        ]
    }
]
}

1 ответ

Решение

Похоже, что это не работает в PowerShell v3.0, поэтому я просто закончил писать посты с явным XML напрямую, а не конвертировать в JSON.

Другие вопросы по тегам