2015-01-21 8 views
13

Ich möchte eine PowerShell 2.0-Umgebung installieren, in der das Upgrade auf 3.0 derzeit nicht möglich ist.PowerShell 2.0 ConvertFrom-Json und ConvertTo-Json-Implementierung

Ich bin auf der Suche nach einer PowerShell 2.0-Skriptimplementierung des Cmdlets ConvertFrom-Json und ConvertTo-Json in PowerShell 3.0.

Ich bin am meisten interessiert an der ConvertFrom-Json, aber ConvertTo-Json wäre auch nett.

+2

zu denen, die gewählt, um zu schließen, um außer-Thema zu sein, verstehe ich Sie nicht. – x0n

+2

Er/Sie hat dies wahrscheinlich als "Skript-Reihenfolge" gelesen, der ich teilweise zustimme. Um die ITIL-Terminologie zu verwenden: Dies ist eine Anforderung für den Dienst (möchte ein Skript), kein Vorfall (Skriptbeispiel mit Fehlern). :) –

+1

@FrodeF., Um einige Informationen über meine Anfrage hinzuzufügen, ist dies definitiv eine 'Skript-Reihenfolge', da ich keine Version schreiben möchte, die JSON-kompatibel ist. Ich hatte gehofft, dass es eine Versammlung gibt, die importiert und gehebelt werden kann. Ich hatte gehofft, dass es eine bekannte Lösung für das monkeyypatching Problem gibt, anstatt dass ich mein eigenes brandneues Skript schreibe und debugge. Wenn das noch nicht Thema ist, kann ich es woanders hin verschieben ... –

Antwort

30
function ConvertTo-Json20([object] $item){ 
    add-type -assembly system.web.extensions 
    $ps_js=new-object system.web.script.serialization.javascriptSerializer 
    return $ps_js.Serialize($item) 
} 

function ConvertFrom-Json20([object] $item){ 
    add-type -assembly system.web.extensions 
    $ps_js=new-object system.web.script.serialization.javascriptSerializer 

    #The comma operator is the array construction operator in PowerShell 
    return ,$ps_js.DeserializeObject($item) 
} 
+4

Hier ist eine ConvertFrom-Funktion, basierend auf dem oben genannten . 'Funktion ConvertFrom-Json20 ([object] $ item) { Add-Typ -Montage system.web.extensions $ ps_js = new-Objekt system.web.script.serialization.javascriptSerializer return $ ps_js.DeserializeObject ($ item) } '. Schlecht formatiert, tut mir leid. – Geoff

+1

Danke Geoff! Ich fügte der Antwort hinzu –

+1

Wenn Sie .NET 3.5 nicht installiert haben, erhalten Sie einen Fehler:" Add-Type: Konnte Datei oder Assembly 'System nicht laden .Web.Extensions, Version = 3.5.0.0, Culture = neutral, PublicKeyToken = 31bf3856ad364e35 oder eines seiner Abhängigkeiten s. Die angegebene Datei wurde vom System nicht gefunden. "... –

2

Sie könnten einen Blick auf powershelljson.codeplex.com Nie probiert es aber.

Wenn das nicht funktioniert, müssten Sie wahrscheinlich selbst eines schreiben. Sie könnten einen Wrapper schreiben, der Json.Net oder Web.Extensions (sample) verwendet, um etwas von der Arbeit zu erledigen.

+0

Der Codeplex-Link sieht genau so aus, wie ich brauche, danke! BTW, ich verbrachte Stunden mit Google versucht, etwas ähnliches zu finden, aber es wollte nur über Powershell v3 sprechen :-( –

+0

BTW, ich werde diese morgen versuchen und akzeptieren, wenn es funktioniert –

1

Ich bin nicht in der Lage auf dem currently top rated post above zu kommentieren, aber können Sie diese Registrierungsbefehle (more details) laufen:

reg add hklm\software\microsoft\.netframework /v OnlyUseLatestCLR /t REG_DWORD /d 1 /f 
    reg add hklm\software\wow6432node\microsoft\.netframework /v OnlyUseLatestCLR /t REG_DWORD /d 1 /f 

die oben ConvertTo-Json20 und ConvertTo-Json20 Funktionen ermöglichen zu arbeiten, wenn Sie bekommen der Fehler:

Add-Type : Could not load file or assembly 'System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35 or one of its dependencies. The system cannot find the file specified. "