2016-04-11 3 views
1

I von 1000 in Powershell jeden Wert eines JSON-Objekt zu teilen, ich versuche, das ist mein Skript,nicht Wert von PSCustomObject von ConvertFrom-Json bearbeiten kann

$logs = Get-Content $file 

$json = $logs | ConvertFrom-Json 

for($i=0;$i -lt $json.timestamp.Count; $i++) 
{ 
    $json.timestamp[$i]=$json.timestamp[$i]/1000 
} 

Das Skript läuft ohne Fehler, aber Wenn ich $json.timestamp überprüfe, hat sich keiner der Werte geändert. Ist das ein spezielles Objekt, da ich es von JSON konvertiert habe?

Beispiel JSON:

{"timestamp":1459786417821000192,"zoneId":23919643} 
+3

Können Sie uns eine Testdatei zur Verfügung stellen? –

+2

Bitte senden Sie ein * repräsentatives * Beispiel. Die von Ihnen gepostete JSON-Zeichenfolge enthält keine Array-Elemente. Warum sollten Sie auch einen Zeitstempel durch 1000 teilen? –

+0

Nun, es ist eine schreckliche Situation zu sein, aber ich benutze ein Protokoll-Management-Produkt namens Splunk, die nur Mikrosekunden und nicht Nano Sekunden unterstützt, also muss ich den Wert in Mikrosekunden konvertieren ... – rusty009

Antwort

1

Ihre Indizes sind falsch. Sie Schleife über $json, aber Sie verwenden die Indizes für die Eigenschaften. Verwenden Sie stattdessen:

for($i=0;$i -lt $json.timestamp.Count; $i++) 
{ 
    $json[0].timestamp=$json[0].timestamp/1000 
} 
+0

Brilliant, das hat funktioniert, Danke. Aber was ich nicht verstehe ist, warum $ json [0] .timestamp und $ json.timestamp [0] immer noch denselben Wert ausgeben, wenn ich es in meinem Skript verwende? Warum der Unterschied, wenn ich versuche, einen neuen Wert zu setzen? – rusty009

+0

@ rusty009 Seltsam, sah das nicht zuerst. Ich habe mir nur Ihren Code angeschaut und meinte "Hmm, die Indizes sind falsch". Scheint wie ein seltsames Verhalten von PSCustomObject, aber ich konnte nichts darüber im Internet finden. Vielleicht [diese Frage] (http://stackoverflow.com/questions/18779762/iterating-through-key-names-from-a-pscustomobject) oder der Link dort kann Ihnen etwas Hilfe geben. –

Verwandte Themen