как преобразовать json -строку в хеш-таблицу - PullRequest
1 голос
/ 25 февраля 2020

Как мы можем преобразовать строку json в hastable? .

Предположим, у меня есть строка, такая как:

{"Application":"Billing Interface","Business Area":"Interfaces","Region":"YO"}

Как мы конвертируем это в таблицу ha sh?

Я делаю это прямо сейчас:

$myJsonString= 
$myJsonString.TrimEnd("}")
             .TrimStart("{")
             .Replace('":"',"= ")
             .Replace('"',"")
             .Replace(","," `n ")
$myJsonString = ConvertFrom-StringData -StringData $myJsonString

Как мы можем преобразовать строку json в hastable?

Ответы [ 3 ]

2 голосов
/ 25 февраля 2020

Я не уверен, зачем вам конкретно Hashtable, но вы можете использовать ConvertFrom- Json для вывода PSCustomObject, а затем преобразовать в таблицу ha sh ($hash).

$myjsonstring = '{"Application":"Billing Interface","Business Area":"Interfaces","Region":"YO"}'
$myjsonstring | ConvertFrom-Json | Foreach-Object {
    $hash = @{}
    $_.PSObject.Properties | Foreach-Object {
        $hash.Add($_.Name,$_.Value)
    }
    $hash
}

Обратите внимание, что PowerShell Core имеет параметр -AsHashTable, который может работать для вас, если вы используете эту версию.

1 голос
/ 27 февраля 2020

Самый простой способ сделать это, используя. NET класс System.Web.Script.Serialization.JavaScriptSerializer. Ссылка на документы Microsoft: https://msdn.microsoft.com/en-us/library/system.web.script.serialization.javascriptserializer (v = vs.110) .aspx

Add-Type -AssemblyName "System.Web.Extensions, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"
$jsSerializer = New-Object -TypeName System.Web.Script.Serialization.JavaScriptSerializer
$jsSerializer.Deserialize($myjsonstring, 'Hashtable')
1 голос
/ 25 февраля 2020

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

$JsonString = "{""Application"":""Billing Interface"",""Business Area"":""Interfaces"",""Region"":""YO""}"
#OR 
$JsonString = Get-Content fromFile.txt

$object = $JsonString | ConvertFrom-Json

$object.Application
$object.'Business Area'

Документы Microsoft на ConvertFrom- Json

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...